У меня есть класс "SecretMessages", который использует перегрузку операторов с копированием и назначением. Он имеет 3 элемента данных, наиболее важно вектор сообщений и вектор message_views, который соответствует количеству оставшихся просмотров каждого сообщения. У меня проблема, когда оператор присваивания вызывается, векторы не инициализируются должным образом. Таким образом, даже если я в состоянии прочитать все копируемые данные внутри функции, когда она вызывается для значения L, эти значения не обновляют вектор.
Мое определение класса выглядит так:
class SelfDestructingMessage {
public:
vector<string> messages;
long number_of_allowed_views;
vector<long> message_views; // keeps track of each message view
...
SelfDestructingMessage(SelfDestructingMessage &sdm); // copy
SelfDestructingMessage operator = (SelfDestructingMessage &sdm); // assign };
А вот выходные данные из тестового файла, который я запускал, который создает новый объект SecretMessage и назначает его тому, который был определенный ранее.
sdm4: //message_views print is empty before assignment
ASSIGNMENT OP
printing out message_views after assign:
0
2
1
END ASSIGNMENT
sdm4 after message views after assignment:
0
0
0
Я не уверен, почему вектор message_views sdm4 не обновляется после * этого возвращения, даже если значения 0, 1 и 2 находятся в векторе сообщений в функции присваивания. Есть идеи?