class A
{
class B
{
int x;
}
public:
void printX() { std::cout << ????; }
}
如何从A类函数中访问x变量?我不能让它静止......
我尝试了一切,但它要么告诉我需要一个对象才能访问它,否则编译器找不到该功能。
答案 0 :(得分:2)
它要么告诉我需要一个对象[...]
想一想。因为这正是问题所在。
如果您实例化A
,,则不会获得B
。嵌套类不是封闭类的成员变量。它实际上只是改变类名称空间的另一种方式。
因此,您需要一个B
的实例。也许是A
的成员?
class A
{
class B
{
public:
int x;
} mB;
public:
void printX() { std::cout << mB.x; }
};
答案 1 :(得分:1)
您没有在A中声明B类的实例。您需要执行以下操作:
class A
{
class B
{
public:
int x;
};
B b;
public:
void printX() { std::cout << b.x; }
};
答案 2 :(得分:0)
你没有。您需要一个对象才能使用x变量。但是你可以让它静止。你的例子的问题是x不公开。将B放在A中并不会使B成为A的一部分,它只会改变B的范围。
从这个例子来看,它有点像你继承之后。这将为您提供所需的效果(无需制作对象即可访问所有B的方法和变量。)
Class B
{
protected:
int x;
}
Class A : B
{
void printX() { std::cout << x; }
}