我尝试为练习目的创建自己的小String类。我想重载const wchar_t *操作符来返回保存在String对象中的缓冲区,但是当我实际访问这个对象时它失败了。它的转换操作符不被调用。它仅适用,当我下明确键入通过(const wchar_t*) mystring
运算符重载,没有明确的类型转换
编辑编制对象:
// CString.h
class CString {
private:
wchar_t* _string;
void set(const wchar_t text[]);
public:
CString();
CString(const wchar_t text[]);
CString(const CString& text);
~CString();
operator const wchar_t*() const;
};
// CString.cpp
#include "CString.h"
CString::CString() { set(L""); }
CString::CString(const wchar_t text[]) { set(text); }
CString::~CString() { delete[] _string; }
void CString::set(const wchar_t text[]) {
delete[] _string;
_string = new wchar_t[wcslen(text)];
wcscpy(_string, text);
}
CString::operator const wchar_t*() const {
return _string;
}
// main.cpp
int main() {
CString* helloWorld = new CString(L"Test 123");
MessageBox(NULL, helloWorld, L"", MB_OK); // This doesn't work
MessageBox(NULL, (const wchar_t*) helloWorld, L"", MB_OK); // This works, but I don't explicitly want to use the cast everytime.
return 0;
}
欢迎来到SO。您可能希望包含字符串类中的相关运算符重载代码,以及如何使用它的示例以及您看到的行为。否则,回答你的问题将会非常困难。这通常会导致问题被关闭。 – leander 2013-05-05 23:22:11
在那里我们去...... – 2013-05-05 23:44:31
也许我错过了一些东西,但你期望你的操作符是为对象本身工作,指向对象的指针 – 2013-05-05 23:56:14