我正在編寫代碼,我使用'='操作符將一個對象分配給另一個對象和一個拷貝構造函數。下面是代碼重載'='不起作用
DJSet(const DJSet& ds)
{
vector<Element<T>* > vec= ds.v_;
for (int i = 0; i < vec.size(); i++)
{
v_.push_back(vec[i]);
}
//cout << "Copy Called\n";
}
DJSet operator=(DJSet ds)
{
DJSet<T> djs;
vector<Element<T>* > vec = ds.v_;
for (int i = 0; i < vec.size(); i++)
{
djs.v_.push_back(vec[i]);
}
cout << "= Called\n";
return djs;
}
類DJSet包含Element<T>* type
所以只有一個矢量當我下面執行代碼。
DJSet<string> djs_rhs;
DJSet<string> djs_lhs;
cin >> name;
djs_rhs.add(name);
cin >> name;
djs_rhs.add(name);
cin >> name;
djs_lhs.add(name);
cin >> name;
djs_lhs.add(name);
djs_lhs = djs_rhs;
cout << djs_lhs << endl;
cout << endl;
cout << djs_rhs << endl;
它沒有將右側的值複製到左側的對象並且它正在調用複製構造函數和'='運算符。請幫我解決一下這個。我怎麼能繼續這個?如果你願意,我可以提供整個源代碼。