Odd Syntax: Asterisk After Scope Operator (:)?
-
27-10-2019 - |
Вопрос
Помогите мне понять следующий фрагмент кода:
(foo.h)
class Foo
{
public:
typedef void (MyType::*Handler)(SomeOtherType* t);
Foo(Handler handler) : handler_(handler) { }
private:
Handler handler_;
};
(mytype.h)
class MyType
{
public:
MyType() { }
void fun1() { }
void fun2() { }
};
Что именно является Typedef в Foo.h, объявляющем здесь? Я вижу, что это какой -то указатель функции, но каково значение звездочки? Похоже, что он отменил привязку типа (??) и каким-то образом пытается «прикрепить» недавно типичный указатель к типу митипа (?!?).
Может ли кто -нибудь пролить свет здесь, пожалуйста? Действительно запутанно: s
Решение
void (MyType::*)(SomeOtherType* t)
является указателем на функцию члена в классе MyType
Это требует одного аргумента (указатель на SomeOtherType
) и ничего не возвращает.
Другие советы
Указатель на MyType
Возвращение функции участника void
и принять указатель на SomeOtherType
как параметр.
Не связан с StackOverflow