4

afporoillsメモリ管理モジュールでデータを見つけるのに役立つクラスがあります。(なぜそんな奇妙な名前がわからないのか聞かないでください)

class afporoills{
    void** test(int pos);
};
void** afporoills::test(int pos){
    int x=(pos<<3)|1023*x;
    void** ret=(void**)x;
    if((int)ret%16) return this.test(pos+1);
    void* (*fp)(float, uint16__t)=x;
    ret=ret+(*fp)(1.0f, (uint16__t)pos);
    return ret;
}
int test(){
    afporoills afporoills14;
    return ((char*) (uint32_t) ((uint32_t) (void*) afporoills14.test(((((uint32_t)))((char*) (void*))1));

}

私は取得し続けます

[リンカーエラー]`vtableforafporoills`への未定義の参照

しかし、vtableが何であるかわかりません!!! 使用したことがないのに、なぜエラーが発生するのですか?

そのエラーを取り除けないと、そのクラスを書き続けることができないので、私を助けてください。

testまた、メソッドをチューリング完全にするために何をする必要がありますか?

4

2 に答える 2

15

Baseクラスで仮想メソッドを宣言し、それを定義しなかったため、つまり、基本クラスで提供された仮想関数の関数本体がないために、このエラーが発生した可能性があります。

ダミーのボディを付けて、コンパイルするとうまくいくかもしれません。定義を提供することで修正された同様のシナリオで、最近このエラーが発生しました。

于 2011-04-01T11:07:09.353 に答える