我试图在课程作品上展示多样性,并希望使用<<运算符可以轻松地将变量添加到列表中。例如:
UpdateList<string> test;
test << "one" << "two" << "three";
我的问题是&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;运算符与ostream有关。
我目前的尝试是:
template <class T> class UpdateList
{
...ect...
UpdateList<T>& operator <<(T &value)
{
return out;
}
}
有谁知道我是如何实现这一目标的,或者在C ++中实际上是不可能的?
答案 0 :(得分:6)
您应该使用const T& value
。
以下代码片段应该可以正常工作
UpdateList<T>& operator << (const T& value)
{
// push to list
return *this;
}
或
UpdateList<T>& operator << (T value)
{
// push to list
return *this;
}
在C ++ 11中(感谢 rightfold )
答案 1 :(得分:1)
您(通常)希望将其声明为非类成员:
template<typename T>
UpdateList<T>& operator<<(UpdateList<T>& lst, const T& value)
{
lst.add(value); // whatever your add/insert method is goes here
return lst;
}
答案 2 :(得分:1)
您需要在课堂外重载operator<<()
:
template<typename T>
UpdateList<T>& operator<<(UpdateList<T>& out, const T& value)
{
return out;
}