source
#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 :: vector :: operator = вызывает перегруженный оператор каждого сохраненного члена A:: operator =
результат не тот, который я хотел.
Мой ожидаемый результат таков:после точка T член va точно такой же, как vb va [0] .name - «третий», а va [1] .value - «четвертый».но результатом будет только копирование значения (поскольку A :: operator = копирует только A :: value )в моем проекте A :: operator = нельзя изменить, потому что он уже использовал много других кодов.но я хочу использовать также std :: container :: operator = .не использует указанные функции копирования.каким способом это можно сделать?