次のように宣言されたクラスがあります。
class TestFoo {
public:
TestFoo();
virtual void virtualFunction();
void nonVirtualFunction();
};
私はこのように実装しようとしています
TestFoo::TestFoo(){}
void TestFoo::nonVirtualFunction(){}
コンパイル時にエラーが返されます:
undefined reference to vtable for TestFoo
私は試した :
TestFoo::TestFoo(){}
void TestFoo::nonVirtualFunction(){}
void TestFoo::virtualFunction(){}
これらの投稿への回答と一致するOKをコンパイルします:
私を混乱させているのは、仮想関数を宣言することの要点は、それを定義する必要がないということだと思っていたことです。この例では、TestFoo のインスタンスを作成するつもりはありませんが、TestFoo から継承する (具体的な) クラスのインスタンスを作成する予定です。それでも、TestFoo のすべてのサブクラスに対して関数 nonVirtualFunction を定義したいと考えています。
うまくいきませんでしたか?
ありがとう !