0

我试图展示课程作业的多样性,并希望使用 << 运算符轻松地将变量添加到列表中。例如:

UpdateList<string> test;
test << "one" << "two" << "three";

我的问题是,<< 运算符的每个示例都与 ostream 相关。

我目前的尝试是:

template <class T> class UpdateList
{
     ...ect...

     UpdateList<T>& operator <<(T &value)
     {
          return out;
     }
}

有谁知道我怎么能做到这一点,或者在 C++ 中实际上是不可能的?

4

3 回答 3

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

于 2013-10-30T13:17:36.710 回答
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;
}
于 2013-10-30T13:18:36.427 回答
1

你需要operator<<()在类外重载:

template<typename T>
UpdateList<T>& operator<<(UpdateList<T>& out, const T& value)
{
    return out;
}
于 2013-10-30T13:18:57.713 回答