5 つのファイルがあるとします。fileA.cpp、fileA.hpp、fileB.cpp、fileB.hpp、および main.cpp。どちらのヘッダー ファイルも関数を定義しますvoid help()。main.cpp ファイルの fileA.cpp と fileB.cpp の関数の使用を切り替えたい。ヘッダーインクルードを切り替えてみましたが、ビジュアルスタジオは定義の重複について不平を言っています。
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 に答える