Тип возврата T не может быть возвращен как ноль? C # Generics

Указатель функции-члена имеет следующую форму:

R (C::*Name)(Args...)

Где R - тип возврата, C - тип класса, а Args... - любые возможные параметры функции ( или нет).

С этим знанием ваш указатель должен выглядеть следующим образом:

void (golu::*t)() = &golu::man;

Обратите внимание на отсутствующий () после функции-члена. Это попытается вызвать указатель функции-члена, который вы только что получили, и это невозможно без объекта. Теперь это становится более читаемым с помощью простого typedef:

typedef void (golu::*golu_memfun)();
golu_memfun t = &golu::man;

Наконец, вам не нужен указатель на объект для использования функций-членов, но вам нужна скобка:

golu m;
typedef void (golu::*golu_memfun)();
golu_memfun t = &golu::man;
(m.*t)();

Скобки важны, поскольку оператор () (вызов функции) имеет более высокий приоритет (также называемый приоритет ), чем оператор .*->*).

10
задан sapbucket 10 September 2011 в 01:16
поделиться