在C 中以双继承为单位的对象
Store object with double inheritance in vector in C++
假设我有以下代码:
#include <string>
#include <iostream>
#include <vector>
struct AddColorToText
{
void MakeItRed(std::string text);
void MakeItGreen(std::string text);
void MakeItBlue(std::string text);
};
因此,第一个结构是一个通用结构,可以为我扔进的任何文本添加颜色。这只是一个示例。这个想法是第一个结构包含方法,然后我得到了另一个带有互补方法的结构:
struct AddEffects
{
void MakeItFlash();
void MakeItFadeGradually();
void MakeItBounce();
};
最后,我得到了从第一个和第二个结构继承的第三个结构,并提供了更多方法:
struct SuperText: public AddColorToText, public AddEffects
{
void SetSize();
void SetFont();
}
现在想象一下,由于某种原因,我必须在AddColortotext Pointers的向量中存储一个超文本对象:
SuperText TheSuperTextObject;
std::vector<AddColorToText*> TheVector;
TheVector.push_back(&TheSuperTextObject);
从AddColortotext Pointers向量恢复超文本方法的最佳/最清洁方法是什么?
TheVector[0]->SetSize??????
编辑您的类声明以启用类似的多态性:
struct AddColorToText
{
void MakeItRed(std::string text);
void MakeItGreen(std::string text);
void MakeItBlue(std::string text);
virtual ~AddColorToText() {}
};
在评论中正确指出的是,您至少需要一种虚拟方法来进行多态性。
然后你可以写
SuperText *sup = dynamic_cast<SuperText*>(TheVector[0]);
sup->SetSize();
相关文章:
- 以天C++为单位的两个时间戳之间的差异
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 从原始字节解码协议缓冲区(以 C++为单位)
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 编写以 C++ 为单位返回值的函数
- 以C++为单位进行运行长度编码
- 如何找到两个日期之间的时间差异(以秒和纳秒为单位)?
- arr[n] 是否以 C++ 为单位打印数组的长度?
- 字符串数组上的 sizeof 运算符以 C++ 为单位给出不同的输出
- 以 C++ 为单位具有输出限制的排列
- 以 GDB 为单位指定浮点精度
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 如何在没有硬编码的情况下以C++为单位获取类数组的长度?
- 指针引用的生存期(以 C++为单位)
- 以字符为单位设置控制台大小
- 是否可以使用 malloc 为类对象分配内存?
- 获取嵌套 stl 容器的大小(以字节为单位)
- Qt c++不会为所有对象调用move_slot.为什么?
- 在C 中以双继承为单位的对象
- 以C++为单位返回当前对象 (*this)