我已經沖刷谷歌和計算器了這麼遠沒有明確的答案,所以我直接問...重載運算符=或operator []的使用const char *與/或串
我創建了一個位圖字體類,我想使用賦值運算符:operator =(const char *)將字符串文字分配給類的文本。 注:我也想用字符串,字符串*與char *分配... 例如:
class BitmapText{
private:
std::string _text;
public:
void operator=(const char* _t){
_text = _t;
}
/*I've also tried another iteration of this operator using
BitmapText& operator=(const char* _t){
_text = _t;
return *this;
}
*/
BitmapText(){}
~BitmapText(){}
};
BitmapText* t1 = new BitmapText();
t1 = "Hello World"
分配的字符字符串到BitmapText目標收益率類似以下內容:
Assigning to 'BitmapText*' from 'const char[12]' incompatible type.
我確定這有一個很好的理由。但它可以通過字符串類來完成。我看着串類,它是從typedef定義:
typedef basic_string<char, char_traits<char>, allocator<char> > string;
這是爲什麼我可以指定一個字符數組string類?因爲它似乎繼承了char的特性?如果沒有這麼複雜的實現,我可以重載我想要的方式嗎?我想第二個問題是(我認爲)沿着同樣的路線: 我想使用運算符[](const char * _name)返回名稱匹配_name值的子對象。
我看到的每個運算符重載示例都使用與被重載的類相同類類型的右手操作數。然而,我讀過,你可以使用不同的數據類型,我們可以清楚地使用char *來爲std :: string對象賦值...
我錯過了什麼? 任何和所有的幫助非常感謝。
WTF? 't1'是一個指針...你不能爲非用戶定義的類型重載操作符,而指針也不是用戶定義的類型。 –
你忘記解除引用t1。嘗試'* t1 =「Hello World」;' –
您可能想要'BitmapText t1; t1 =「Hello World」;'。除非真的需要這樣做,否則不要動態分配東西。 – Praetorian