c++ - 静态 int 初始化

标签 c++ static

如何更正它以便我可以通过

显示静态整数
cout<<A::a<<endl;

就像下面的例子一样?

#include <iostream>
using namespace std;
class A{
    public:
        static int a = 0;
};

int main()
{
    cout << A::a << endl;
    return 0;
}

最佳答案

在类定义中,静态成员只是声明而没有定义。默认情况下,只有定义有初始化,除了对于整数类型的静态常量,声明可以有初始化。

您的程序中的问题是使用了静态成员(std::cout << A::aodr-use 用于非常量静态成员属性),但您没有定义。您需要通过添加以下内容在程序的单个翻译单元中定义变量:

int A::a = value;

(请注意,因为静态成员不是 const,您不能在类定义中提供初始化器,所以您需要从类定义中的声明中删除= 0。还要注意你可以跳过初始化中的 = value if value == 0 ,因为静态初始化会在任何其他初始化之前将 A::a 设置为 0)

关于c++ - 静态 int 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12861772/

相关文章:

java - Android 无法更新 ArrayAdapter,因为 "Non-Static method ' notifyDataSetChanged( )' cannot be referenced from a static context"

c - 什么是 C 中链表的忠实替代品?

c++ - 当容器定义为 const 时,带有自定义迭代器的自定义容器不起作用

c++ - 从 Eigen::Tensor 创建 tensorflow::Tensor

android - ActivityInstrumentationTestCase2和static final : fields become null after first test的使用

javascript - 从静态方法中创建实例

在 Mac OS X 上找不到错误库

c++ - 虚表和多态性

c++ - 如果字段通过引用传递,则类字段可以在 const 方法内修改吗?

c++ - 如何遍历作为某个派生类的基对象