【发布时间】:2013-07-22 08:22:45
【问题描述】:
我正在为运算符重载而苦苦挣扎,因为我希望它允许链接
class A{
int a;
public:
void doSomething(char *str);
A operator<<(char *str);
}
所以我有这门课,我能做的就是拿一个字符串做一些事情,这对这个问题并不重要。
我现在能做的是
A *counter = new A();
counter->doSomething("hello");
如果我实现了重载的移位运算符
A A::operator<<(char *str)
{
this->doSomething(str);
return this;
}
我可以这样写
A *counter = new A();
(*counter) << "hello";
我希望我没有在这里犯错,因为现在我想知道如何允许链接
(*counter) << "hello" << "test";
我知道通过链接它会做到这一点
(*counter).operator<<("hello" << "test");
这显然没有任何意义,因为有两个字符串/字符数组 但我知道有办法做到这一点。我用谷歌搜索了它,但每个问题都只是关于将相同类型的实例链接在一起
然后我尝试将两个参数放入函数并将其添加为朋友...我不确定,但也许我必须使用char* 类型或流对象创建一个新的重载运算符并制作它作为A的朋友?
感谢您的帮助,我想应该有一个我现在看不到的简单答案。
【问题讨论】:
-
您的运营商最好选择
const char*。
标签: c++ operator-overloading chaining