Это звучит как XY проблема (каламбур).
Судя по всему, вы не пишете код в соответствии с хорошими объектно-ориентированными практиками.Я бы посоветовал вам не использовать «хитрости», предложенные другими людьми, но на самом деле узнать, как лучше использовать структуру ОО.
Прежде чем углубляться в это, обратите внимание, что назначение отличается от отношения равенства .=
в C ++ - это присваивание, которое не совпадает с =
в математике.Существует несколько (но не так много) языков программирования, которые поддерживают отношения равенства, но C ++ не является одним из них.Дело в том, что добавление поддержки отношений равенства порождает кучу новых проблем, поэтому это не так просто, как «почему этого еще нет в C ++».
В любом случае, в этом случае вам, вероятно, следует инкапсулироватьваши связанные переменные в классе.Затем вы можете использовать методы для получения «актуальной» информации.Например:
class Player {
std::vector<int> inventory;
int cash;
public:
int inventory_total();
int net_worth();
}
//adds up total value of inventory
int Player::inventory_total() {
int total = 0;
for(std::vector<int>::iterator it = inventory.begin(); it != inventory.end(); ++it) {
total += *it;
}
return total;
}
//calculates net worth
int Player::net_worth() {
//we are using inventory_total() as if it were a variable that automatically
//holds the sum of the inventory values
return inventory_total() + cash;
}
...
//we are using net_worth() as if it were a variable that automatically
//holds the sum of the cash and total holdings
std::cout << player1.net_worth();
Я допускаю, что добавить это поведение в класс немного сложнее, чем сказать z = x + y
, но на самом деле это всего лишь несколько дополнительных строк кода.
Это было бы очень раздражающим и подверженным ошибкам, если бы вы забыли вызвать функцию где-либо.
В этом случае объект не имеет член net_worth
переменная, поэтому вы не можете случайно использовать ее вместо вызова функции.