ホームページ  >  記事  >  バックエンド開発  >  C プログラムで「未定義のシンボル: \'vtable\' および \'typeinfo\'」エラーが発生するのはなぜですか?

C プログラムで「未定義のシンボル: \'vtable\' および \'typeinfo\'」エラーが発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 16:02:56345ブラウズ

Why Am I Getting

未定義のシンボル: "vtable" および "typeinfo"

質問:

コンパイル時C プログラムでは、次のエラーが発生します:

Undefined symbols:
  "vtable for Obstacle"
  "typeinfo for Obstacle"

これらの記号は何を意味し、どのように解決できますか?

答え:

このエラーは、コンパイラが次のことを行うことができないことを示します。 Obstacle クラスの vtable と typeinfo を見つけます。これは、次の場合に発生する可能性があります。

    Obstacle クラスが抽象として適切に宣言されていない、または
  • Obstacle クラスに、派生クラスに実装されていない非純粋な仮想メソッドが含まれています。
これらのエラーを解決するには、次の構文を使用して、Obstacle クラスのすべての仮想メソッドが純粋な仮想メソッドとして宣言されていることを確認します。

<code class="cpp">virtual void Method() = 0;</code>
これは、メソッドをオーバーライドする必要があることを示します。

Obstacle クラスに非純粋な仮想メソッドが含まれている場合は、それらが派生クラスで実装されていることを確認してください。それ以外の場合、コンパイラはどこかに実装があると想定し、実際の実装を含まないオブジェクト ファイルに vtable と typeinfo を生成します。

以上がC プログラムで「未定義のシンボル: \'vtable\' および \'typeinfo\'」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。