5 つのファイルがあるとします。fileA.cpp、fileA.hpp、fileB.cpp、fileB.hpp、および main.cpp。どちらのヘッダー ファイルも関数を定義しますvoid help()
。main.cpp ファイルの fileA.cpp と fileB.cpp の関数の使用を切り替えたい。ヘッダーインクルードを切り替えてみましたが、ビジュアルスタジオは定義の重複について不平を言っています。
質問する
212 次
1 に答える
1
それはリンカーエラーです。fileB.obj
およびfileA.obj
(および)がmain.obj
リンクされて、実行可能ファイルが形成されます。fileA.obj
とfileB.obj
の両方に の定義が含まれるためvoid help()
、複数の定義エラーが発生します。の include ディレクティブの変更とは無関係main.cpp
です。
で囲むvoid help()
ことを提案namespace
:
ファイル A.hpp :
namespace filea
{
void help();
}
ファイル A.cpp :
namespace filea
{
void help()
{
// implementation
}
}
ファイル B.hpp :
namespace fileb
{
void help();
}
fileB.cpp :
namespace fileb
{
void help()
{
// implementation
}
}
main.cpp :
#include <fileA.hpp>
using filea::help;
//#include <fileB.hpp>
//using fileb::help;
于 2012-05-23T07:55:35.647 に答える