내 코드에서 멤버 함수의 찾아보기 테이블을 만들려고하지만 "복사 할 수없는"클래스를 확장하여 차단 한 내 복사본 생성자를 호출하는 것으로 보입니다. 내가 가진 것은 다음과 같은 것이다. . 라인 왜 이렇게하려고 보이지 않는 복사 생성자를 호출하려고, 나는 이렇게 변경 무엇을해야합니까 -구성원 함수 포인터가 복사 생성자를 호출합니까?
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);
}
};
오류는 '> (이'는 것입니다 그것은하지 않습니다?
표시되는 정확한 오류 메시지를 게시 할 수 있습니까? –
Foo 복사 생성자 또는 Bar 복사 생성자에 대해 이야기하고 있습니까? 바 (bar)라면, 이것은 정말로 기본적인 문제입니다. Foo가 컴파일 가능한 코드 샘플을 게시하면, 필자가 Foo 클래스를 채우고 Foo를 복사 할 수없는 클래스로부터 상속 받았기 때문에이 코드는 정상적으로 작동했기 때문입니다. –