我嘗試爲練習目的創建自己的小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