1

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;
 }
 }
4

1 に答える 1