我正在尝试在我的代码中创建成员函数的查找表,但它似乎正在尝试调用我的复制构造函数,我已通过扩展“不可复制”类来阻止它。我所拥有的类似于以下内容。
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);
}
};
错误是 '(this->...' 行尝试调用不可见的复制构造函数。为什么要尝试这样做,我必须更改什么才不会?