相关疑难解决方法(0)

如何在C++中初始化私有静态成员?

在C++中初始化私有静态数据成员的最佳方法是什么?我在头文件中尝试了这个,但它给了我奇怪的链接器错误:

class foo
{
    private:
        static int i;
};

int foo::i = 0;
Run Code Online (Sandbox Code Playgroud)

我猜这是因为我无法从课外初始化私人成员.那么最好的方法是什么?

c++ initialization static-members

492
推荐指数
11
解决办法
47万
查看次数

C++静态成员变量及其初始化


对于C++类中的静态成员变量 - 初始化在类外部完成.我想知道为什么?对此有任何逻辑推理/约束吗?或者它是纯粹的遗留实现 - 标准不想纠正?

我认为在类中初始化更"直观"而且不那么混乱.它还给出了变量的静态和全局性.例如,如果您看到静态const成员.

c++ initialization static-variables

48
推荐指数
2
解决办法
5万
查看次数

为什么需要在类之外定义静态数据成员?

根据IBM C++知识中心的静态数据成员:

类的成员列表中的静态数据成员的声明不是定义.您必须在命名空间范围内的类声明之外定义静态成员.

这是为什么?关于内存分配的原理是什么?

c++ static

16
推荐指数
3
解决办法
6899
查看次数