C++嵌套类中,访问父变量
C++ nested classes, access fathers variables
标题已经说了很多,
但基本上我想做的是以下内容(示例):
我有一个名为 A 的类,在 a 中还有一个名为 B 的类,如下所示:
class A
{
int a;
class B
{
void test()
{
a = 20;
}
};
};
如您所见,我的目标是让 B 类能够访问 A 类,因为它是一个嵌套类。这不是行不通的,因为 B 无法访问 A,但它如何获得访问权限?
谢谢
尽管您在 A 内部声明了 B 类,但 A 类和 B 类仍然是完全独立的。 唯一的区别是,现在要引用B,必须做A::B。
为了让 B 访问 A 的东西,你应该使用组合或继承。 对于组合,给 B 一个对 A 对象的引用,如下所示:
class B {
public:
B(const A& aObj) : aRef(aObj) {
cout << aRef.a << endl;
}
private:
const A& aRef;
};
对于继承,如下所示:
class B: public A { // or private, depending on your desires
B() {
cout << a << endl;
}
}
内部类与C++中的外部类无关,就像在Java中一样。对于访问A
对象成员的 A::B
实例,它需要在某处具有 A
的实例,就像B
不是嵌套类一样。A::B
的实例没有任何隐式的A
实例;您可以有许多A::B
实例,而根本不存在任何A
实例。
将A
的实例传递给test
,然后使用它来访问a
成员:
void test(A& a_instance)
{
a_instance.a = 20;
}
类
是类型,类型没有数据。实例有数据,但A
的实例(在您的示例中)不包含 B
的实例,并且B
的实例不知道任何A
实例。
选择
B
必须是A
的孩子,而不是被A
所包含- 让
B
的构造函数引用创建它的A
实例(首选)
现在,如果变量a
是私有的,这仍然无济于事。您将需要访问者或朋友关系。
C++嵌套类不像Java嵌套类,它们不属于A的实例,而是静态的。所以在这一点上不存在
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 通过按地址访问变量
- 通过 get-Method 访问变量在类外不起作用
- 是否可以使用指针访问变量以避免直接编辑变量?
- 我无法访问变量的值,即使我通过范围传递了它
- 简单的问题 - 如何从单独的"结构"内的'class'访问变量?
- (C++) 从另一个类访问变量时值无效
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 是否可以从字符串访问变量?
- 变量 z 无法从其他函数访问变量 x
- 如何在 C++ 中从 void 返回函数访问变量
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在C 中本地声明隐藏的封闭范围(而非全局)中访问变量
- 从函数中删除动态内存分配,但无法访问变量
- 如何从派生类中的基类访问变量的值?
- 如何通过指针更快地访问变量,然后直接访问变量?
- 如何在公共类 c++ 中访问变量的值
- 从 Visual Studio 中的多个源文件访问变量
- 使用命名空间和模板类访问变量
- 从子对话框访问变量