c++ - undefined reference std::pair

标签 c++ gcc g++ std-pair

有人会认为这段简单的代码应该很容易编译:

#include <utility>

struct Q {
    static const int X = 0;
};

int main() {
    std::pair<int, int>(Q::X, 0);
    return 0;
}

但是,当我使用默认设置 (cygwin gcc 4.5.3) 使用 g++ 编译它时,它向我抛出一个链接器错误:

undefined reference to `Q::X'

我在这里完全被难住了——MSVC 编译这个很好,但我的 gcc 没有。 (MinGW 也能正常工作。)

最佳答案

链接器无法找到 Q::X 的定义.

这可能是因为std::pair<>构造函数将参数作为对 const 的引用,并且 Q::X是左值,因此它需要 Q::X 的外部定义以便能够引用。

可移植修复:

int const Q::X;

关于c++ - undefined reference std::pair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17650532/

相关文章:

c# -\015 &\012 和\r &\n 的区别

C++0x decltype 和范围解析运算符

c++ - 如何使boost ptree以相同的方式解析xml和json?

c++ - 重载相等运算符==时,是否应该首先检查引用相等性?

exception - GCC (ARM) 中异常处理程序的 __attribute__((interrupt))

c++ - Eclipse,构建共享库的最佳方式?

c++ - 如何在 OSX 上编译此代码

c++ - 为什么我在 MinGW 中不需要标志 -lm 但在 Linux 中我明确需要它?

linux - 无论如何都可以附加到流程的 map ,同时让您的文件从 map 中隐藏起来

c++ - 在 C++ 问题中链接 Cuda