我正在为运算符重载而苦苦挣扎,因为我希望它允许链接
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
?
感谢您帮助我,我想应该有一个我现在看不到的简单答案。