Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по теории C++

1.2K
18 июня 2006 года
BigBug
93 / / 30.07.2004
Помогите разобраться.
Есть класс 'Bcl' который имеет указатель на функцию.
Есть класс 'Acl' который создаёт объект 'Bcl' и передаёт ему
указтель на одну из своих функций (всмысле пытается).
Компеляцию это не проходит.

error C3867: 'Acl::callmeFunc': function call missing argument list; use '&Acl::callmeFunc' to create a pointer to member

Что нетак ?

Код:
typedef void CALLB(int);

class Bcl
{
public:
    CALLB *m_func;

    Bcl(CALLB *func);
    void FuncACall();

};

Bcl::Bcl(CALLB *func):m_func(func)
{}


void Bcl::FuncACall()
{
    m_func(0);
}



//************************************************


class Acl
{
public:
    Acl();
    Bcl varBcl;
    void callmeFunc(int n);
    void CallIt();
};


Acl::Acl():varBcl(callmeFunc)
{}


void Acl::callmeFunc(int n)
{
    cout<<"called "<<n<<endl;
}


void Acl::CallIt()
{
    varBcl.FuncACall();
}



int main()
{

    Acl var;
    var.CallIt();
 return 0;
}
3
19 июня 2006 года
Green
4.8K / / 20.01.2000
У тебя тип CALLB - это статический метод, а передавать ты пытаешь нестатический.

Объяви метод callmeFunc(int n) статическим:
static void callmeFunc(int n);
1.2K
19 июня 2006 года
BigBug
93 / / 30.07.2004
Ошибка понятна :)
Но всёже если я хочу void callmeFunc(int n);
оставить не статическим методом.
Есть для этого решение ?
3
19 июня 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=BigBug]Ошибка понятна :)
Но всёже если я хочу void callmeFunc(int n);
оставить не статическим методом.
Есть для этого решение ?[/QUOTE]
Сделай указатель на соотв. метод класса Acl:

typedef void (Acl::PFunc*)(int n);
.....
PFunc m_func;

Только учти, что для вызова нестатического метода класса тебе будет нужен экземпляр этого класса:

Acl acl;
.......
(acl.*m_func)(0);

или так:

Acl* pAcl;
.......
(pAcl->*m_func)(0);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог