考虑一个类如下:
class A {
public:
// code...
private:
class B {
public:
int aNum;
// ...
}
}
我要为A制作一些构造函数,例如:
A::A() { } // default...
A::A(int input) { /* code... */ }
所以我想知道如何访问aNum
,因为它不是直接在A下。
答案 0 :(得分:0)
正如一些评论所述,您不能仅仅从aNum
“访问”A
,因为它是B
的一部分。
您需要在B
中创建A
对象,并在B
对象中设置值,或者您需要将aNum
从B
移至A
。
如果您在B
内创建A
对象,则会看起来像这样。
struct A {
A(int input) {
bObj.aNum = input;
}
// ...
private:
struct B {
int aNum;
// ...
};
B bObj;
};
如果您想直接从aNum
访问A
,那么您应该考虑aNum
是否真的是嵌套类的一部分。在这种情况下,您的班级设计很可能是错误的,A
实际上是B
而非{{1}}的一部分。
答案 1 :(得分:0)
就像你班上有任何数据成员一样,没有什么不同
class A {
public:
// code...
private:
class B {
public:
int aNum;
}
}
在您可以访问类aNum
的非静态数据成员B
之前,您必须创建类似B
类型的对象:
class A
{
public:
const B& getObjectB() const { return objectB; };
private:
B objectB;
}
你可以这样做:
A objectA;
objectA.getObjectB().aNum;
这里发生的事情是我们调用返回getObjectB()
的{{1}},然后通过该电话调用objectB
。
答案 2 :(得分:0)
A需要某种方式来引用类型B的对象,这是一个简单的例子。
class A {
private:
class B {
public:
int aNum;
};
B b;
public:
A(int);
};
A::A(int input) {
b.aNum = input;
}