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 に答える