C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++の未定義の参照/未解決の外部シンボルエラーとは何ですか?


名前が示すように、宣言したシンボルはあなたによって定義されていません。これは多くの場合に発生する可能性があります。そのうちの3つを見てみましょう-

  • 宣言された名前を定義するのを忘れました。たとえば、ファイルで関数を宣言し、それをどこかで使用したとします。しかし、あなたはその定義を提供しませんでした。コード-

#include<iostream>
void foo();
int main() {
   foo(); // Declared but not defined
}
  • 定義しましたが、修飾名を使用しませんでした。メソッドを使用してクラスを作成し、そのメソッドを定義したが、スコープ解決を使用してその関数をその定義にリンクするのを忘れ、その関数をどこかで使用したとします。たとえば、

#include<iostream>
class A {
   void foo();
};
void foo() { } // should have used A::foo
int main() {
   A a;
   a.foo(); // Not defined!
}
  • 依存関係を間違った順序で含めませんでした。リンカは、指定した順序でリンクを試みます。したがって、定義の前にメソッドを使用すると、このエラーが発生する可能性があります。

このエラーの原因となる可能性のある条件の完全なリストを作成することはできません。しかし、考えられる理由の非常に精選されたリストについては、この投稿を参照できます-https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and- how-do-i-fix


  1. C ++のブールリテラルとは何ですか?

    ブールリテラルは、trueまたはfalseのいずれかの意味を持つリテラルです。 C ++には、trueとfalseの2つのブールリテラルしかありません。これらのリテラルはbool型です。あなたはそれらを-として使うことができます 例 #include<iostream> using namespace std; int main() {    bool my_bool = true;    if(my_bool) {       cout << "My bool is true!"

  2. C ++の標準ライブラリとは何ですか?

    C ++プログラミング言語では、C ++標準ライブラリはクラスと関数のコレクションであり、コア言語とC++ISO標準自体の一部で記述されています。 C ++標準ライブラリは、いくつかの汎用コンテナ、これらのコンテナを利用および操作するための関数、関数オブジェクト、汎用文字列とストリーム(インタラクティブおよびファイルI / Oを含む)、いくつかの言語機能のサポート、および正方形の検索などの日常的なタスクのための関数を提供します数値のルート。以下は、C++標準ライブラリの機能の一部です- ストリーム- これらのライブラリは、C++で使用可能なさまざまなタイプのストリームを処理するために使用され