gpt4 book ai didi

c++ - const 静态成员初始化 - 内部类定义与外部类定义

转载 作者:太空狗 更新时间:2023-10-29 20:55:39 34 4
gpt4 key购买 nike

<分区>

我知道静态字面量类型成员可以在类定义中初始化,非字面量类型不能。

class Class 
{
static const int lt = 0; //OK
static const std::string nlt = "hello"; //compilation error
};

但是,我遇到了一个奇怪的问题,如果 STL 容器中的成员是在类定义内部而不是外部初始化的,我就无法使用它们。

class Class
{
public:
static const int var = 1;
void f();
};

void Class::f() {
std::vector<int> vec;
vec.push_back(var);
}

上面的示例导致链接器错误 undefined reference to Class::var 如果我将初始化移到外面,错误就会消失。

const int Class::var = 1;

以上两种初始化有什么区别?为什么会导致 STL 容器错误?

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