2016-11-01 103 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