1
클래스 A와 클래스 B의 두 클래스가 있습니다. ClassB는 ClassA를 상속받습니다. 나는 두 통화 당 - 파일의 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