J'essaie de créer une table de recherche de fonctions membres dans mon code, mais il semble essayer d'appeler mon constructeur de copie, que j'ai bloqué en étendant une classe "uncopyable". Ce que j'ai est quelque chose comme ce qui suit.Un pointeur de fonction membre appelle un constructeur de copie?
enum {FUN1_IDX, FUN2_IDX, ..., NUM_FUNS };
class Foo {
fun1(Bar b){ ... }
fun2(Bar b){ ... }
...
void (Foo::*lookup_table[NUM_FUNS])(Bar b);
Foo(){
lookup_table[FUN1_IDX] = &Foo::fun1;
lookup_table[FUN2_IDX] = &Foo::fun2;
}
void doLookup(int fun_num, Bar b) {
(this->*lookup_table[fun_num])(b);
}
};
L'erreur est que le « (ce -> ... » ligne essaie d'appeler le constructeur de copie, non visible Pourquoi est-il tente de le faire, et qu'est-ce que je dois changer ainsi. il ne sera pas?
Pourriez-vous poster le message d'erreur exact que vous voyez? –
Parlez-vous du constructeur de copie Foo ou du constructeur de copie de barre? Si la barre, alors c'est un problème vraiment fondamental (répondu ci-dessous par litb). Si le Foo, alors s'il vous plaît poster un échantillon de code compilable, parce que quand j'ai rempli le ... s et fait Foo hériter d'une classe uncopyable, cela a très bien fonctionné. –