【发布时间】:2015-05-07 19:13:33
【问题描述】:
我写了一些代码如下。 这里有一个外部类和一个内部类。 我想要一个类似于java内部静态类的功能。 所以我将内部类对象声明为静态的。 输出很好:
#include <iostream>
using namespace std;
class X {
private:
X() {}
public:
class Y {
public:
virtual void f() = 0;
};
class Z:public Y {
public:
Z(X& val) : x(val) {}
void f() {
cout << "Programming";
x.i = 5;
}
private:
X& x;
};
static Z getZ() {
return z;
}
private:
static Z z;
int i;
};
X::Z X::z = X::getZ();
int main()
{
X::getZ().f();
return 0;
}
虽然我无法理解这句话。它是如何工作的?
X::Z X::z = X::getZ();
编辑:那我该如何初始化内部类的实例呢? 当我在下面分配时,我也会遇到分段错误,这可能是因为自我分配。
x.i = 5;
【问题讨论】:
-
和
X::z由自身的副本初始化...:/ -
... 这应该是未定义的行为。
标签: c++ static inner-classes