在继承类中使用同一文件时,C 链接器错误
C++ linker error when using same .h-file in inherited class
我有两个类: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) {...}
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Visual Studio mkl_link_tool.exe链接错误
- C++ 实现模板单例类时出现链接错误
- 使用类模板的方法链接错误
- MySQL C++连接器链接错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 运行 C++ 单元测试时LNK2005链接错误
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 链接错误,包括我创建的相同头文件 - C++
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 使用标头保护的多个定义链接错误
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 使用 Vivek 的 Vcam / 捕获源过滤器构建/链接错误
- 升压program_options中的链接错误
- 使用 g++ 预处理器进行替换会导致链接错误
- 在调试配置中编译工作正常,但发布会给出链接错误
- 相邻矩阵设置链接错误
- 包含常量变量并包含在多个文件中的标头的链接错误
- C++链接错误,我理解但无法解决
- 是什么导致macOS Mojave上的GoogleTest链接错误