Друзья, выручайте!
Что-то я в тупике очередном.
Ситуация такая: есть функция статическая, которая вызывается по определенному событию. В функцию передается указатель gpointer на класс, содержащий переменную, и в этой функции переменная этого класса устанавливается в "1".
Далее мне необходимо уже из не-статического метода этого класса узнать значение этой переменной. Я все время ее вижу как "0", хотя при следующем вызове статической функции она видит эту переменную правильно как "1".
Подскажите как мне так сделать, чтобы можно было менять значение переменной класса как из статических методов так и из не-статических.
Спасибо!
Проблема со статической переменной
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Ты несколько напутал с понятиями класс и объект, пока объяснял, поэтому не совсем всё очевидно. Если в тех местах, где ты писал "переменная класса", имелось в виду "поле объекта", то я вижу единственное объяснение происодящему - объекты разные. Попробуй в обоих местах посмотреть не только само поле, но ещё и значение указателя this. Подозреваю, что оно разное.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Я тоже подозреваю, что оно разное, но не для всего экземпляра класса.. дело в том, что ряд других переменных абсолютно правильные, но правда они назначаются только при инициализации. А вот именно эта переменная у меня такое ощущение, что она оказывается по разным адресам в памяти в зависимости от того, какая функция вызывается. Бред короче...
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Не может быть "разным, но не для всего экземпляра класса". Все смещения полей компилятор вычисляет от this. Ты посмотрел, чем this равен?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.