1
クラスAとクラスBの2つのクラスがあります。 ClassBはClassAを継承します。私は両方の.cpp-ファイルでutilities.hから方法継承クラスで同じ.hファイルを使用するとC++リンカエラーが発生する
round(double number, int precision)
を使用できるようにclassa.cppとclassb.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)" (?
[email protected]@@[email protected]) 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;
}
}
ありがとうございます!これは私の問題を解決しました。 – Canna