ClassA と ClassB の 2 つのクラスがあります。ClassB は ClassA を継承します。メソッドを使用できるように、classa.cpp と classb.cpp の両方に utility.h-header ファイルが含まれています。
round(double number, int precision)
両方の .cpp ファイルの utility.h から。
次のように ClassA で使用する場合:
double roundANumber(double number, int precision)
{
return Utilities::round(number, precision);
}
それは正常に動作します。しかし、次のように ClassB で使用しようとすると:
double roundAnotherNumber(double number, int precision)
{
return Utilities::round(number, precision);
}
リンカーは私にエラーを与えます:
error LNK2005: "double __cdecl Utilities::round(double,int)" (?
round@hUtilities@@YANNH@Z) already defined in classa.obj
そして、私はこれがなぜなのか理由を見つけることができないようです.
前もって感謝します。
編集:Utilities.hにはこれのみが含まれていることを追加
#include <cmath>
namespace MathUtilities {
double round(double number, int precision) {
int precisionFactor = std::pow(10, precision);
return std::round(number * precisionFactor) / precisionFactor;
}
}