C++ コンパイル エラー: 完全修飾名が見つかりません。変更するにはどうすればよいですか?

WBOY
リリース: 2023-08-22 10:48:14
オリジナル
1150 人が閲覧しました

C は、システムレベルのプログラミングとハイパフォーマンス コンピューティングで広く使用されているプログラミング言語です。しかし、C を使用する過程で、コンパイル エラーが頻繁に発生します。この記事では、一般的な C コンパイル エラー (完全修飾名が見つかりません) とその修正方法について説明します。

1. 問題の説明

C コードをコンパイルするときに、コンパイラーは次のエラーを報告する場合があります:

error: ‘someIdentifier’ was not declared in this scope
ログイン後にコピー

または

error: ‘someIdentifier’ is not a member of ‘someObject’
ログイン後にコピー

これらのエラーは、コンパイラーがコード内の名前の定義が見つかりません。

2. 問題の原因

C は静的型付け言語であるため、変数や関数は使用する前に宣言または定義する必要があります。識別子が使用される前に宣言または定義されていない場合、コンパイラは識別子の意味を理解できません。

たとえば、次の C コード フラグメントについて考えてみましょう。

int main() {
    someFunction();
    return 0;
}
ログイン後にコピー

someFunction() がこのコード フラグメントで宣言または定義されていない場合、コンパイラは not found エラーを発行します。名前の間違い。

同様に、オブジェクト内に存在しないメンバーを使用しようとすると、「名前が見つかりません」というエラーが発生します。たとえば、次のコードについて考えてみましょう。

class SomeClass {
public:
    void someMethod();
};

int main() {
    SomeClass obj;
    obj.nonExistentMethod();
    return 0;
}
ログイン後にコピー

このコード スニペットでは、nonExistentMethod() は存在しないメンバー関数です。したがって、コンパイラを使用しようとするとエラーが発生します。

3. 解決策

「完全修飾名が見つかりません」エラーを解決するには、コード内で欠落している識別子を宣言または定義する必要があります。

関数と変数の場合、初めて使用する前に宣言することで、それらが定義されていることを確認できます。例:

void someFunction(); // 函数声明

int main() {
    someFunction();
    return 0;
}

void someFunction() { // 函数定义
    // ...
}
ログイン後にコピー

このコード スニペットでは、someFunction() が関数宣言 void someFunction(); によって定義されていることを確認します。この宣言がないと、コンパイラは someFunction() の意味を理解できません。

オブジェクト メンバーの場合、使用されるメソッドがクラス内で宣言または定義されていることを確認する必要があります。例:

class SomeClass {
public:
    void someMethod();
};

int main() {
    SomeClass obj;
    obj.someMethod();
    return 0;
}

void SomeClass::someMethod() { // 成员函数定义
    // ...
}
ログイン後にコピー

このコード スニペットでは、someMethod() がクラスで宣言または定義されていることを確認します。この宣言または定義がないと、コンパイラはメンバー関数の意味を理解できない可能性があります。

4. 概要

C コードを記述するときは、使用する関数、変数、オブジェクト メンバーを宣言または定義する必要があります。そうしないと、コンパイラーはそれらの意味を理解できません。 「完全修飾名が見つかりません」エラーが発生した場合は、欠落している識別子が正しく宣言または定義されていることを見つけて確認する必要があります。

以上がC++ コンパイル エラー: 完全修飾名が見つかりません。変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート