C++ C++;如何创建用于转发方法的嵌套类?
所以我的想法很简单——有一个可以有自己的公共方法的类和一个只支持某些公共方法的嵌套类(伪代码):C++ C++;如何创建用于转发方法的嵌套类?,c++,class,nested,C++,Class,Nested,所以我的想法很简单——有一个可以有自己的公共方法的类和一个只支持某些公共方法的嵌套类(伪代码): 是否可以在C++中实现这样的嵌套类,而如何?< /p>不直接,至少与java不一样。嵌套类必须包含指向“外部”类的指针或引用。不是直接的,至少与Java中的方式不同。嵌套类必须包含一个指针或指向“外”类的引用。 在C++中可以创建一个强的>局部类< /强>。本地类是在函数中定义的类。 但这样的类有几个限制。详细阅读它 在C++中,不能像java一样创建嵌套类。嵌套类是另一个类范围内的类 嵌套类的名称
<>是否可以在C++中实现这样的嵌套类,而如何?< /p>不直接,至少与java不一样。嵌套类必须包含指向“外部”类的指针或引用。不是直接的,至少与Java中的方式不同。嵌套类必须包含一个指针或指向“外”类的引用。 在C++中可以创建一个强的>局部类< /强>。本地类是在函数中定义的类。
但这样的类有几个限制。详细阅读它 <>在C++中,不能像java一样创建<强>嵌套类<强>。嵌套类是另一个类范围内的类 嵌套类的名称是其封闭类的本地名称(在封闭类的范围外不可见)。除非使用显式指针或引用,否则嵌套类中的声明只能使用可见的构造,包括封闭类中的类型名、静态成员和枚举数 嵌套类需要注意的两个要点是:
这样,您就需要使用<强>构图< />或显式地将一个指针或引用的外部类对象传递给嵌套类
,可以在C++中创建一个<强>局部类< /强>。本地类是在函数中定义的类。但这样的类有几个限制。详细阅读它 <>在C++中,不能像java一样创建<强>嵌套类<强>。嵌套类是另一个类范围内的类 嵌套类的名称是其封闭类的本地名称(在封闭类的范围外不可见)。除非使用显式指针或引用,否则嵌套类中的声明只能使用可见的构造,包括封闭类中的类型名、静态成员和枚举数 嵌套类需要注意的两个要点是:
因此,您需要使用组合或显式地将外部类的对象的指针或引用传递给嵌套类是的,但在创建内部类时必须提供外部类的实例。。。这两种类型[大部分]是独立的,因此
B
与API
的任何特定实例都没有关联
更多伪代码
struct API {
void go();
struct B {
B(API& api) : api(api) { }
void go() { api.go(); }
};
};
API a;
B b(a);
b.go();
或者,您可以将API
的实例传递给B
的函数[B::go(API&)
]
此外,API
不包含B
的实例,除非您明确添加实例
struct API {
struct B { };
B b;
};
另外,请注意,
B
不需要通过API
授予友谊。作为一个内部类,B
已经可以访问API
s私有/受保护的成员。然而,事实并非如此API
无法访问B
s私有/受保护的成员,除非B
授予其权限。是,但创建内部类时必须提供外部类的实例。。。这两种类型[大部分]是独立的,因此B
与API
的任何特定实例都没有关联
更多伪代码
struct API {
void go();
struct B {
B(API& api) : api(api) { }
void go() { api.go(); }
};
};
API a;
B b(a);
b.go();
或者,您可以将API
的实例传递给B
的函数[B::go(API&)
]
此外,API
不包含B
的实例,除非您明确添加实例
struct API {
struct B { };
B b;
};
另外,请注意,
B
不需要通过API
授予友谊。作为一个内部类,B
已经可以访问API
s私有/受保护的成员。然而,事实并非如此API
无法访问B
s私有/受保护的成员,除非B
授予其权限。为什么要这样做?刚开始公开请求
似乎不那么麻烦。你为什么希望这样做?刚开始公开请求
似乎不那么麻烦。