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* ();
            ...

在 main 函数的某处:

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

“main 中某处”的三行都没有使用赋值,因此我们可以忽略您可能定义的任何赋值运算符。而且您还没有定义一个转换构造函数,它采用单个参数 (a wchar_t const*) 来转换您的wchar_t const*.

于 2012-11-27T23:24:33.323 回答