ホームページ >バックエンド開発 >C++ >C++ エラー: 複数の定義があります。それを変更するにはどうすればよいですか?

C++ エラー: 複数の定義があります。それを変更するにはどうすればよいですか?

王林
王林オリジナル
2023-08-21 20:31:441367ブラウズ

C は、特にコンピューター サイエンスで広く使用されている高級プログラミング言語です。しかし、プログラムを書いていると「定義が複数ある」などのエラー報告に遭遇することがあります。

まず、なぜ「複数の定義」が発生するのかを理解する必要があります。 C では、同じ変数、関数、クラスを別のファイルに定義すると、「多重定義」の問題が発生します。

それでは、プログラムでこれが起こった場合はどうすればよいでしょうか?通常、解決策は 2 つあります。

1 つ目の方法は、「ヘッダー ファイル」を使用する方法です。つまり、定義内容を別のファイルに記述し、必要なファイル内の #include ディレクティブを通じてこのファイルを参照します。このようにして、ヘッダー ファイルは各ファイルで 1 回参照するだけで済み、「複数定義」の問題を回避できます。

関数を例にとると、ヘッダー ファイルで関数のプロトタイプを定義し、必要なファイルの #include ディレクティブを通じてこのヘッダー ファイルを参照できます。たとえば、ヘッダー ファイル "function.h" で関数 "int add(int a, int b);" を定義し、#include "function.h" によって必要なファイルでこのヘッダー ファイルを参照できます。ファイル 「add(a, b)」関数を呼び出すだけです。

コード例:

function.h:

#ifndef FUNCTION_H
#define FUNCTION_H

int add(int a, int b);

#endif

function.cpp:

#include "function.h"

int add(int a, int b)
{
    return a + b;
}

main.cpp:

#include <iostream>
#include "function.h"

int main()
{
    int a = 3, b = 5;
    std::cout << add(a, b) << std::endl;
    return 0;
}

は次のとおりです。 「ヘッダファイル」の場合、ヘッダファイルを参照するのはファイルごとに一度だけでよく、プログラム内で関数「add(a, b)」を使用することで「多重定義」の問題を回避できます。

2 番目の方法は、「名前空間」を使用する方法です。名前空間を使用すると、異なる変数、関数、またはクラスに異なる名前を指定して、同じ名前の定義によって引き起こされる「複数の定義」の問題を回避できます。

コード例:

namespace FirstNamespace {
    int value = 1;
}
 
namespace SecondNamespace {
    int value = 2;
}
 
int main()
{
    std::cout << FirstNamespace::value << std::endl;
    std::cout << SecondNamespace::value << std::endl;
    return 0;
}

上記のコードでは、変数「value」を同じ名前で「FirstNamespace」と「SecondNamespace」の名前空間にそれぞれ定義しました。使用する場合、名前空間を通じてさまざまな変数を区別します。このように、同じ名前の変数が別のファイルに定義されている場合でも、名前空間を使用することで「多重定義」の問題を回避できます。

まとめると、プログラム内で「複数の定義」が発生した場合、「ヘッダーファイル」または「名前空間」を使用することでこの問題を解決できます。状況に応じて適切な方法を選択し、プログラム内で同じ名前の定義が存在しないように注意する必要があります。

以上がC++ エラー: 複数の定義があります。それを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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