arduino - 如何进行继承
问题描述
无法理解如何正确继承对象。有我的代码:
#include <ArduinoSTL.h>
class Element {
public:
Element() {
};
virtual void execute() {
Serial.print("element\n");
}
};
class ExtendedElement : public Element {
public:
ExtendedElement() : Element() {
}
virtual void execute() {
Serial.print("extended element\n");
}
};
class Wrapper {
private:
std::vector<Element> elements;
public:
void execute() {
for (Element element : elements) {
element.execute();
}
}
void addTask(Element element) {
elements.push_back(element);
}
};
Wrapper wrapper;
void setup() {
Serial.begin(9600);
ExtendedElement extendedElement = new ExtendedElement();
wrapper.addTask(extendedElement);
}
void loop() {
wrapper.execute();
}
所以,我想扩展类,创建这个扩展类的实例,并将这样的实例放入基类的向量中。然后我想遍历向量中的元素,并调用子类函数。无法理解我做错了什么。
解决方案
的结果new
应该分配给一个指针
ExtendedElement *extendedElement = new ExtendedElement();
元素应该是一个指针向量
class Wrapper {
private:
std::vector<Element*> elements;
public:
void execute() {
for (Element *element : elements) {
element->execute();
}
}
void addTask(Element *element) {
elements.push_back(element);
}
};
推荐阅读
- python - 删除列仅包含 NaN 或零的行
- google-cloud-platform - gke 节点的承诺使用折扣
- django - Nuxt Auth 'loginWith' 功能不向 DRF 发送数据
- python-3.x - PermissionError: [Errno 13] Permission denied: './model' PYTHON
- javascript - Dropdown with Search Box using Bootstrap Selectpicker not working
- python-3.x - 无法打开 jupyterlab
- r - 如何从~3-4 GB的txt文件有效地将大矩阵(20k x 20k)加载到Rstudio中?[子图提取]
- windows - WSL2:使用 *.code-workspace 文件从命令行启动 VSCode
- python - 如何将每日数据批量转换为每周数据
- java - java.lang.String 不能转换为 CustomObj