Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов из статической функции нестатических 
V
    Опции темы
TNT86
  Дата 30.11.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



У меня есть статическая функция, скажем WndProc, в классе MyClass из нее я должен вызывать кучу всяких функций для объектов этого же класса. Только вот как вызвать из статической функции класса функции конкретного объекта?
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Fazil6
Дата 30.11.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



статические члены и функции класса не создаются для каждого объекта, они у всех объектов класса общие.
Поэтому в статической функции ты не можешь обращаться к нестатическиим членам класса через this. Если в функцию передать аргументом объект или указатель или ссылку этого класса, то можно обращаться к к любым членам класса через этот объект.
PM MAIL   Вверх
TNT86
Дата 30.11.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Просто тогда становится непонятным как регистрировать класс в WINAPI. Насколько я понимаю класс должен иметь функцию WndProc с определенным набором параметров?
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
Shymep
Дата 30.11.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 16.11.2006
Где: Харьков

Репутация: нет
Всего: 1



Вообще, имхо, такое нужно обходить. Можно передавать в статический метод указатель на объект этого класса.

Например
Код

const NULL = 0;
class A{
   static int a;
   int b;
   void set_b(int);
public:
   static void set_a(int,A*,int);
};
int A::a;
void A::set_a(int _a, A*_A,int _b){
   a = _a;
   if(_A!=NULL){
       _A->set_b(_b);
   }
}
void A::set_b(int _b){
   b = _b;
}
int main(int argc, char* argv[])
{
   A*myA = new A();
   A::set_a(10,myA,3);
   return 0;
}


ЗЫ: кажется опоздал с ответом  smile 

Это сообщение отредактировал(а) Shymep - 30.11.2006, 12:31
PM MAIL   Вверх
TNT86
Дата 30.11.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Спасибо! Проблему с WndProc разрешили вот здесь !
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
TNT86
Дата 30.11.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 14.8.2006
Где: Одесса

Репутация: нет
Всего: нет



Что-то сразу тему не закрыл
--------------------
виртуальныe MYSQL и  PHP эксперты
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.