1
源C++ STL containor存儲了重載操作者的一類=
#include <iostream>
#include <vector>
#include <string>
class A
{
public:
std::string name;
int value;
A& operator = (const A& from) { value=from.value; return *this; }
A(std::string a_name, int a_val) { name=a_name; value=a_val; }
};
int main()
{
std::vector<A> va;
va.push_back(A("first",1));
va.push_back(A("second",2));
std::vector<A> vb;
vb.push_back(A("third",3));
vb.push_back(A("fourth",4));
va = vb; //point T
return 0;
}
在點T,的std ::矢量<甲> ::運算=呼叫每個所存儲的成員的重載操作A ::運營商=
結果是不是我想要的。
我的預期的結果是:
後點T,所述VA的部件是完全相同的VB像
VA [0] .NAME是 「第三」 和VA [1]。值是「第四」。
但結果只複製值(因爲A ::運算符= copys只有A ::值)
在我的項目
的A ::運算符=不能因爲它已經使用了許多其他代碼而被更改。
但我也想用std :: container :: operator =。不使用指定的複製功能。
哪種方式可以做到這一點?
類`A`有一個寫得不好的構造函數(沒有初始化列表),所以我不會」不要說維護這個課堂聽起來像是一件值得做的事情。如果這是任何跡象,那麼您正在使用的代碼庫可能整個質量都很差,並可能從重寫中受益。 – 2011-12-13 20:15:50
如果您的作業操作員進行了部分複製,那麼您的原始設計有缺陷是一個很好的建議。 – Chad 2011-12-13 20:16:00