gpt4 book ai didi

c++ - 将 static const int 作为引用传递时出现链接器错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:59 26 4
gpt4 key购买 nike

<分区>

为什么在使用 gcc 4.6.3 编译时会出现对 NUMBER 的 undefined reference 错误?:

g++ -std=c++0x -pipe -Wall -pedantic file.c

文件.c:

#include <stdio.h>
#include <utility>

class Thing {
public:
Thing() {
foo(NUMBER);
const int* p = &NUMBER;
printf("%d\n", *p);
}
void foo(const int& i) {}
static const int NUMBER = 123;
};

int main() { Thing thing; return 0; }

错误:

chetic@home:~/Documents$ g++ -std=c++0x -pipe -Wall -pedantic test.c 
/tmp/cceBY2zr.o: In function `Thing::Thing()':
statest.c:(.text._ZN5ThingC2Ev[_ZN5ThingC5Ev]+0x11): undefined reference to `Thing::NUMBER'
statest.c:(.text._ZN5ThingC2Ev[_ZN5ThingC5Ev]+0x21): undefined reference to `Thing::NUMBER'

我在这里提到了#3:http://eel.is/c++draft/class.static.data/#3但我希望有人能用更简单的术语来解释它。

为什么编译器不给出一个可读的错误来打我的手,或者为什么不将 NUMBER 视为变量?

另外,为什么这会显示为链接器错误?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com