Указатель на метод класса - PullRequest
2 голосов
/ 10 октября 2009

Я пытаюсь получить указатель на методы класса, поэтому у меня есть что-то вроде:

class foo {
    public:
    static void bar() {
}
};

void (foo::*bar)() = &foo::bar;

Это не компилируется :( Я получаю:

> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
> initialization

Ответы [ 3 ]

4 голосов
/ 10 октября 2009

Статический метод, когда используется по имени, а не вызывается, является указателем.

void (*bar)() = foo::bar; // used as a name, it's a function pointer
...
bar(); // calls it
2 голосов
/ 10 октября 2009

bar() - статическая функция, другими словами, нет параметра this.

void (*myfunptr)() = &(foo::bar);
2 голосов
/ 10 октября 2009

Указатель на статический член имеет тот же тип, что и указатель на не член.

Попытка:

void (*bar)() = &foo::bar;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...