gpt4 book ai didi

c++ - C++ 中 const 的内部链接,但我得到重复的符号

转载 作者:行者123 更新时间:2023-11-30 03:02:34 25 4
gpt4 key购买 nike

有人可以给点建议吗?

如果 C++ 中的 const 默认为内部链接,为什么我在下面的代码中会出现多个定义错误?

首先,文件dem.h:

#ifndef _DEM_H_
#define _DEM_H_
class Dem {
public:
static const int i;
};

const int Dem::i = 10;
#endif

它们imp1.cpp:

#include "dem.h"
#include <iostream>

using namespace std;
extern int foo();

int main() {
cout << foo() << endl;
}

imp2.cpp:

#include "dem.h"

int foo() {
return Dem::i ;
}

我使用以下命令和结果进行编译:

$ g++ imp1.cpp imp2.cpp
/tmp/ccmGt0OY.o:imp2.cpp:(.rdata+0x0): multiple definition of `Dem::i'
/tmp/cc5sN7dz.o:imp1.cpp:(.rdata+0x0): first defined here
collect2: ld returned 1 exit status

最佳答案

来自 C++11 [basic.link],第 5 段:

In addition, a member function, static data member, a named class or enumeration of class scope, or an unnamed class or enumeration defined in a class-scope typedef declaration such that the class or enumeration has the typedef name for linkage purposes (7.1.3), has external linkage if the name of the class has external linkage.

因为您的类有外部链接,所以您的静态数据成员也有。

关于c++ - C++ 中 const 的内部链接,但我得到重复的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022355/

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