The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"нужен массив указателей на функции класса"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"нужен массив указателей на функции класса"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Апр-04, 12:09  (MSK)
массив указат на функ у страунстр хорошо описан, но вот как правильно
объявить его в классе? что-то не выходит, примерчик не подскажите?
Спасибо
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "пример"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Апр-04, 12:47  (MSK)
Написал такую лабуду
======================

class test {
int i;

public:
test(int i);
~test() {}
void init(int);
int func1(int);
int func2(int);
int (*func[])(int);
};

void
test::init(int i) {
this->i = i;
func[0] = &test::func1;
func[1] = &test::func2;
}
test::test(int i) { init(i); }

int test::func1(int c) { puts("1"); }
int test::func2(int c) { puts("2"); }

main()
{
test *X = new test(5);
}
//#EOF

А она сволочь ругается
======================
dimfunc.c: In method `void test::init(int)':
dimfunc.c:19: converting from `int (test::*)(int)' to `int (*)(int)'
dimfunc.c:20: converting from `int (test::*)(int)' to `int (*)(int)'

====================
Как объявить-то, бля?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "ЗАРАБОТАЛО! может кому пригодиться? :-))"
Сообщение от Lamr emailИскать по авторуВ закладки on 08-Апр-04, 15:17  (MSK)
#include <stdio.h>

class test {
int i;

public:
test(int i);
~test() {}
void init(int);
int func1(int);
int func2(int);
};

int (test::*func[2])(int);

void
test::init(int i)
{
this->i = i;
func[0] = &test::func1;
func[1] = &test::func2;
}

test::test(int i) { init(i); }

int test::func1(int c) { puts("1"); }
int test::func2(int c) { puts("2"); }

main()
{
test *X = new test(5);

(X->*func[0])(5);
(X->*func[1])(5);

}
//#EOF

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру