Ich habe eine Klasse mit dem Namen Fstring
, es hat eine wchar_t*
drin.Überladen von Operator für Zeichenfolge in C++
Ich schrieb die im Anschluss an die Stringliteral in Fstring
zu kopieren:
#include <iostream>
using namespace std;
class Fstring{
wchar_t *arr;
public:
Fstring& operator = (const wchar_t temp[])
{
delete [] arr;
arr=new wchar_t[wcslen(temp)];
for(int i=0;i<=wcslen(temp);i++)
arr[i]=temp[i];
return *this;
}
};
int main()
{
Fstring test=L"Hello World";
return 0;
}
Aber es hat nicht funktioniert. Der Compiler hat mir die folgende Fehlermeldung:
error C2440: 'initializing' : cannot convert from 'const wchar_t [12]' to 'Fstring'
ich wirklich verwirrt bin, gegoogelt ich „Überladen von Operatoren“ aber alle Ergebnisse haben die gleiche Weise, die ich verwendet, um den Bediener zu überlasten. Warum funktioniert das nicht?
Warum nicht einfach 'std :: wstring' verwenden? – cdhowie
'Fstring test = L" Hallo Welt ";' ruft einen Konstruktor nicht 'operator =' auf, da Sie ein neues 'Fstring' konstruieren. –
Vielleicht möchten Sie auch einen Konstruktor implementieren. –