所以我有一个头文件,其中包含函数实现和原型(prototype)。我现在正试图将这些实现从文件中分离出来,只留下原型(prototype),因为我知道在头文件中实现这些实现并不是好的标准。但是,当我从头文件中删除实现并将它们放入自己的 cpp 文件中,然后尝试将该 cpp 文件链接到项目的其余部分时,它会提示函数的多个定义。感谢您的帮助/建议
std::bitset<LENGTH> foo1(const std::string stringVal);
std::bitset<LENGTH> foo2(const int decimalVal);
std::string foo3(const int integerVal);
我有一个包含守卫,所以它也不会被包含超过一次。
然后在 cpp 中我简单地实现了这些函数。然而,如果它们与头文件分开,它会提示函数的多个定义。
编辑:我的愚蠢错误已解决。
最佳答案
那只是一个声明。即使文件没有 include guards,它也不会给出那个错误。
多重定义通常意味着您在多个实现文件中定义函数。
这是一个 list :
确保实现完全在 header 之外。
确保只有一个源文件定义函数
确保您不包含源文件(这是微不足道的,我希望您知道不要这样做)
最后,检查您是否运行了干净的构建
关于C++ 多重定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933080/