0

C++ で仮想関数を使用する際に小さな問題があります

クラスAを拡張するクラスBがあります。

Class A{
  virtual function 1 // does nothing 
  virtual function 2 // does nothing
}

class B : public class A {
  function 1 { does some thing }
  function 2 { does some thing }
}

別のクラスを実装しています

class implement {

  B b;
  A *a = &B;
  a.function 1();
  a.function 2();
}

このコードをコンパイルすると、GCC コンパイラでのコンパイル中に次のエラーが発生します。

関数 1 と関数 2 への未定義の参照。

事前にこれを解決するのを手伝ってください

4

1 に答える 1

5

C++ では、純粋仮想関数のみが関数定義なしで存在できます。
あなたのコードには、純粋な仮想関数がありません。純粋仮想関数は=0、宣言に がある関数です。
例えば:

virtual void doSomething()=0;

基本クラスのvirtualメンバー関数 (function1()および)は純粋仮想ではないため、定義が必要です。それらの定義を提供しなかったため、リンカは定義の欠落について適切に文句を言います。function2()A

undefined reference to function 1 and function 2
于 2013-02-23T18:39:01.647 に答える