Domanda

aiutarmi a capire il seguente frammento di codice:

(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() { }    
};

Che cosa è esattamente il typedef in foo.h dichiarando qui? Posso vedere che è un puntatore a funzione di qualche tipo, ma qual è il significato della asterisco? Sembra essere de-fa riferimento a un tipo (??) e in qualche modo cercando di "collegare" il puntatore di recente typedef al tipo di MyType (?!?).

Qualcuno può far luce qui per favore? Davvero confuso: S

È stato utile?

Soluzione

void (MyType::*)(SomeOtherType* t) è un puntatore ad una funzione membro della classe MyType che accetta un argomento (puntatore a SomeOtherType) e restituisce nulla.

FAQ Lite .

Altri suggerimenti

puntatore a una funzione membro MyType ritorno void e prendendo puntatore a SomeOtherType come parametro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top