我有两个类:classa和classB。ClassB继承了班级。classa.cpp和classb.cpp都包含一个效用。
round(double number, int precision)
来自两个.cpp-files中的Utilities.h。
在这样的班级中使用它时:
double roundANumber(double number, int precision)
{
return Utilities::round(number, precision);
}
它可以正常工作。但是,当我尝试在这样的班级中使用它时:
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;
}
}
标题仅被解析,好像它们被直接包含在内。因此,您最终重复了功能定义。
要解决此问题,请使用inline
:
inline double round(double number, int precision) {...}