Я застрял в проблеме, я чувствую себя глупо, так как это всего лишь две строки кода в середине работающего сценария ООП в 2000 году.C++ int accessor return 0, даже если мутатор правильно настроен
Отрезать погоню - у меня есть класс Entity, который предоставляет различную информацию (имя, адрес, идентификатор). Проблема в том, - даже если ID мутатор (сеттер) устанавливает правильное значение (протестировано с соиЬ и возвращаемого значения), аксессор всегда возвращает 0.
// ID accessor
int Entity::ID() const {
return _ID;
}
// ID mutator
int& Entity::ID(int newID) {
if (newID >= 0) {
_ID = newID;
}
return _ID;
}
Вот мои классы (метод ID (INT) является называется в AgencyNetwork :: createXXX() и используется в каждом методе toStr() (в конце каждого класса)):
Entity.cpp, AgencyNetwork.cpp, Agent.cpp
РЕШИТЬ: Я забыл добавить идентификатор мутатор в каждом операторе =. Спасибо всем, кто помог :)
Любой маленький, автономный образец, который воспроизводит проблему? –
uhm yeah, AgentNetwork.ccp строка 139 - это вызов мутатора, а строка 275 Agent.cpp - это вызов для аксессора. Надеюсь, это то, что вы делаете по образцу. Просто наличие мутатора/аксессора из «в дикой природе» не имеет смысла, я думаю, что это OOP :) – Asmodiel
Неверно возвращать 'int &' из функции-члена 'mutator'. Попробуйте вернуть plain 'int'. – DaddyM