我已经冲刷谷歌和计算器了这么远没有明确的答案,所以我直接问...重载运算符=或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