2013-07-19 5 views
0

Я знаю, что синтаксис для типа функции, отличной от указателя, похож на void (int). Каков синтаксис для типа функции не указателя? то есть class C; void (C::*)(int), но не указатель.Тип функции Синтаксис

+0

'void (C :: &) (int)' – dchhetri

+2

@ user814628 Нет такой вещи. –

+0

@ R.MartinhoFernandes, да, я так думаю. Кажется, что 'void (& refFunc) (int)' для обычных функций, но для функций-членов, кажется, ошибка. Можете ли вы рассуждать о том, почему? – dchhetri

ответ

4

Ответ void (C::*)(int).

void (C::*)(int) не является указательным типом. Указатели на функции-члены are not pointers. Они are very strange animals.

Они просто, смущенно, используют имя и обозначения, похожие на указатели; это нудизм, с которым мы должны жить.

+0

Что называется? –

+0

Они * смещения *, правильно? –

+0

@BartekBanachewicz нет, они являются указателями на функции-члены. –

0

Для любого класса C и любого типа, не являющихся членами T, то указатель на член тип T C::*.

Так что, если у вас есть функция типа T = R(A1, A2, A3), то в качестве функции члена, это указатель на член типа

T C::* = R (C::*)(A1, A2, A3) 

Например, в

struct C 
{ 
    R foo(A1, A2, A3); 
    int x; 
} 

величины &C::foo имеет этот тип. Кроме того, &C::x имеет тип int C::*.

Смежные вопросы