Вопрос

Помогите мне понять следующий фрагмент кода:

(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) и ничего не возвращает.

FAQ LITE вход.

Другие советы

Указатель на MyType Возвращение функции участника void и принять указатель на SomeOtherType как параметр.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top