2016-11-01 142 views
0

推薦我有以下類列出:添加操作符重載

class ListWrapper 

{ 

    private: vector<MyItem> items; 

    public : MyItem& operator+(MyItem& itm){items.push_back(itm);} 

}; 

class MyItem 
{ 
    private: int data; 
}; 

,纔有可能增加項目使用運營商+運算符重載MYLIST?

I.e. :

MyItem item1,item2,item3; 
ListWrapper lw; 

lw + item1 + item2+ item3; 

我可以在ListWrapper使用的運營商,但有一種方式,通過多個項目,像這樣的例子有嗎?

+0

你_have_返回從你的'+'運算符的東西。它應該是一個'ListWrapper' –

回答

2

我建議沒有副作用的operator+,因爲它很混亂。

更好:

ListWrapper& operator+=(std::initializer_list<MyItem> l) { 
    items.insert(items.end(), l); 
    return *this; 
} 

然後,你可以這樣做:

lw += {item1, item2, item3}; 
+0

你是什麼意思的副作用 – user3150947

+0

@ user3150947修改對象是一個副作用 – Brian