c++ - 奇怪的多重定义错误

标签 c++

我的代码中有这样的东西:

namespace A {
namespace B {

void
GetLine(std::istream& stream, std::string& line)
{
    line.clear();
    while (stream.good()) {
        std::getline(stream, line);
        boost::trim(line);
        if (not line.empty()) break;
    }
    boost::to_upper(line);
}

}
}

每当调用 A::B::GetLine 时,我都会收到多重定义错误。有什么想法吗?

(代码正在运行,所以如果您需要更多信息,我会尝试给出具体的片段,但我不能只将整个代码粘贴到这里)。

最佳答案

您几乎可以肯定地将代码包含在多个 header 中,而不是在 header 中声明并在源文件中定义。您需要将函数声明为内联、模板化,或者将定义移动到源文件中,但将声明保留在 header 中。

关于c++ - 奇怪的多重定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3541416/

相关文章:

c++ - 使用 OpenCV、GStreamer 流式传输视频

c++ - 可能正在学习旧的 C++ 标准

c++ - OpenGL 两个屏幕

c++ - 对 `boost::this_thread::interruption_point()' 的 undefined reference

c++ - Python ctypes : initializing c_char_p()

c++ - 无法在 Eclipse 中解析符号 'cv'

c++ - 如何在安装程序中自动创建 (My)Sql ALTER 脚本?

c++ - 访问二维数组时到底发生了什么

c++ - 编译器错误 : passing const object as ‘this’ argument of a method discards qualifiers

c++ - cuda 将大于线程数的数组复制到共享内存