1

C++ を学習しようとしていますが、次のコードが機能しない理由がわかりません。

class String
{
public:
    String();
    String(const String& other);
    String& operator = (const String& other);
    String& operator = (const wchar_t* other);
    String& operator () (const wchar_t* other);
    ~String();
    operator const wchar_t* ();
            ...

メイン関数のどこかに:

wchar_t* x = L"A test string";
String y = (String)x; //not working
String z = x;  //not working

VC++ コンパイラは次のように教えてくれます。

Error   1   error C2440: 'type cast': cannot convert from 'wchar_t *' to 'String'   
Error   2   error C2440: 'initializing': cannot convert from 'wchar_t *' to 'String'    
IntelliSense: no suitable constructor exists to convert from "wchar_t *" to "String"

私は何を間違っていますか?

4

2 に答える 2

6

のコンストラクタが必要ですwchar_t*

String(const wchar_t*);
于 2012-11-27T23:20:32.497 に答える
3

「メインのどこか」の 3 行のいずれも代入を使用していないため、定義した可能性のある代入演算子は無視できます。また、単一の引数 (a wchar_t const*) を受け取る変換コンストラクターを定義していないため、wchar_t const*.

于 2012-11-27T23:24:33.323 に答える