C++ 继承和组合一起使用
C++ Inheritance & composition used together
我有类A,有更新B属性的方法。所以,我需要继承。
class B{
public:
int x;
};
class A : public B{
public:
void update(int y){
x = y;
}
};
我也想通过类B达到函数"update",所以我也需要composition。
class B{
public:
A a;
int x;
};
class A : public B{
public:
void update(int y){
x = y;
}
};
我希望我的结构是这样的,所以我想通过这种方式跟踪对象类型B的属性:
...
B.a.update(5);
int n = B.x;
但是,我不能在声明类A之前使用composition,也不能在声明类B之前使用继承。我应该如何解决这个无限循环?
我不确定你在这里到底想实现什么,但如果我猜测正确的话,你可能需要一个虚拟函数:
class B{
public:
int B;
virtual void update(int x){
B = x;
}
};
class A : public B{
public:
virtual void update(int x){
// Here goes code specific to B-class.
B::update(x);
// or here ;)
}
};
顺便说一句,您可能不希望public:
部分包含int B
字段;如果您从update
方法修改它的值,您可能不希望其他人尝试直接修改它。
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- C++ std:: 并包括它们如何组合在一起?
- 如何在 c++ 中将多重继承与组合一起使用?
- 通过字符串迭代并将每个循环中的先前字符组合在一起
- 如何将一个 while 循环与 for 循环组合在一起?
- 将两个数组组合在一起,形成每个项目的一对
- OpenGL 将来自 ttf 的渲染器文本与背景纹理组合在一起时出错
- 将PCH,PDB和Zi组合在一起会导致VS2017的C2859编译错误令人费解
- 在 switch 语句中将多个案例组合在一起
- 将两个矩阵组合在一起,然后用一个值组织另一个值
- 如何将array.h,array.cpp和main.cpp文件组合在一起
- Windows C - 需要想法 - 在同一应用/窗口中将鼠标输入和原始输入组合在一起
- 在 c++ 中将向量与一个或多个相似元素组合在一起
- 如何渲染成不同的层,然后将它们与OpenGL组合在一起
- 这就是我把两个小堆组合在一起的方式
- 试图将字符串的两个元素组合在一起会得到错误的结果(c++)
- 将两种方法组合在一起
- 我可以将一个可执行文件与另一个可执行文件(Windows 服务程序)组合在一起,并将该程序作为逻辑服务运行吗?
- 将两个常量char*组合在一起