为什么类中不能有静态对象
Why can I not have a static object in a class?
指以下内容:
class A { ... };
class B
{
static A a; // this fails
...
static A& getA() { static A a; return a; } // this works
...
};
...
B b;
b.a <-- gives error: undefined reference to B::a
为什么我不能在class B
中static A
,但从方法返回它是可以的?
[编辑]
只是一些奇怪的事情:
struct C
{
static const int x = 5;
};
int main()
{
int k = +C::x;
std::cout << "k = " << k << "n";
return 0;
}
output: k = 5
C::x
没有在实现范围内定义,也没有 C
的实例,但是,unary +
C::x
可以访问......!?
你肯定可以拥有它。
您可能忘记了在类外部定义对象(恰好一次):
class B {
// ...
};
A B::a;
编辑:基于对问题的编辑,现在这基本上是一种确定性,而不仅仅是概率。
相关文章:
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 我可以读取静态对象中的文件.txt吗?C++
- 通过 Gazebo 世界插件将静态对象附加到机器人链接
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- 完全释放静态对象内存
- 静态对象指针
- C++文件中.cpp静态对象声明
- C++类中定义静态对象
- 在初始化类的静态对象之前,是否保证初始化该类的静态成员?
- 静态对象如何调用私有构造函数
- cpp 静态对象实例化
- 等效于 Java 静态对象类C++
- 我怎么知道C++编译器是否制作线程安全的静态对象代码
- 在dlclose()之前破坏的静态对象
- 有没有办法为静态对象成员定义一个符合开关标准的常量?
- c++ 防止类共享静态对象
- 什么时候构造函数为静态对象
- 为什么本地静态对象的初始化使用隐藏的防护标志?