不包含的继承
Inheritance without containing?
我有a类,我有b类,我有很多很多从b类派生的类。
我想实现这一点:B的导数应该可以访问A的受保护变量,而不是每个都包含A的实例,这将需要大量的内存。所以我想这次公共继承不是个好主意。怎么解呢?谢谢!
您可以使用friend
和访问器函数来完成此操作。这确实相信B
会远离A
的私有——除非A
和B
之间存在继承关系,否则不能让仅 B
和子类访问仅 A
的受保护成员。
class A {
friend class B;
protected:
int X;
};
class B {
protected:
static int getX(A const & a) { return a.X; }
};
class C : public B {
public:
void foo(A const & a) { int bar = getX(a); }
};
使B的类为a的友类
根据我的理解,B
的孩子与A
类无关,因此不应该访问A
的非公开部分。
访问B
子类中A
数据的正确方法是通过A
的公共接口。如果这样的公共接口是不够的,那么这是一个信号,要么你正在尝试做一个糟糕的设计,或者A
的公共接口需要改进。
相关文章:
- 成员包含其他继承类的继承类?
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 当子类需要在 c++ 中相互包含时,继承有缺陷
- cppyy 继承包含智能指针的类
- 继承一个类,该类继承另一个已包含的类
- 在派生类的成员联合中包含继承的基类成员
- python永远不能调用包含继承逻辑的c++dll或左右文件
- 从 std::enable_shared_from_this 继承的自身自包含shared_ptr
- 将 Makefile 包含在 qmake 中,继承属性
- 派生类是否C++必须在头文件中包含继承函数/成员的定义
- 如何使数组包含从基类继承的类
- 包含在 C++ 中的继承中
- 在 main 中包含基类和继承类的标头
- 一个包含类、继承和多态性的谜语
- C++.子项继承自“父项”,并作为“父级”属性包含在内
- 当基类不包含数据成员时,虚拟继承是否仍然是必要的
- 继承还是包含?C++
- 如何在继承boost::any中包含的std::vector的类上循环
- C++:包含继承、多态性和工厂
- 包含带有层次继承的错误