Рассмотрим следующее объявление классаCocos2d-х AppDelegate инициализации элемент данных потерял
class AppDelegate : private cocos2d::Application
{
private:
int _test;
// ....
};
Я инициализирующий элемент int _test
данных как
AppDelegate::AppDelegate() : _test(20) {
cocos2d::log("Initialzing %p with _test = %d", this, _test);
}
Позже, когда код
bool AppDelegate::applicationDidFinishLaunching() {
cocos2d::log("Checking %p, found _test = %d", this, _test);
// ....
}
, выход
Initialzing 0x10da4aa20 with _test = 20
// ....
Checking 0x10da4aa20, found _test = 1056964608
Это означает, что _test
неинициализирован. Проблема, похоже, специфична для архитектуры cocos2d-x, так как я не могу воспроизвести ее в проекте песочницы (где AppDelegate
обменивается на более простой класс).
Мой вопрос: почему эта инициализация потеряна? Есть ли другой способ инициализировать и использовать элемент данных в классе AppDelegate
?
У вас есть собственный экземпляр-копирайтер или оператор копирования? –
Нет, нет настраиваемых копий-конструкторов или операторов присваивания копий. – conciliator
Я не знаком с cocos2dx.I помню, что каждый класс имеет функцию, которая называется «init». Они вызывается после конструктора. Возможно, эта функция делает это ... –