我正在制作一个简单的类,使用operator<<
。它将存储两个平行的数据数组,每个数组都有不同(但已知)的数据类型。 思路是最终的接口看起来像这样:
MyInstance << "First text" << 1 << "Second text" << 2 << "Third text" << 3;
这将使数组看起来像这样:
StringArray: | "First text" | "Second text" | "Third text" |
IntArray: | 1 | 2 | 3 |
我可以处理检查输入逻辑以确保一切匹配的问题,但我对 "operator<< " 的技术细节感到困惑。
我查看的教程说要将其重载为友元函数,并使用 std::ostream& 返回类型,但我的类与流没有任何关系。我尝试使用 void 作为返回类型,但出现编译错误。最终,我返回了一个类的引用,但我不确定为什么这样可以工作。
以下是我的代码:
class MyClass
{
public:
MyClass& operator<<(std::string StringData)
{
std::cout << "In string operator<< with " << StringData << "." << std::endl;
return *this; // Why am I returning a reference to the class...?
}
MyClass& operator<<(int IntData)
{
std::cout << "In int operator<< with " << IntData << "." << std::endl;
return *this;
}
};
int main()
{
MyClass MyInstance;
MyInstance << "First text" << 1 << "Second text" << 2 << "Third text" << 3;
return 0;
}
此外,我的类的用户可能会执行以下不需要的操作:
MyInstance << "First text" << 1 << 2 << "Second text" << "Third text" << 3;
我该如何强制输入的交替性呢?
<<
操作链接在一起。 - GWW