【发布时间】:2019-01-12 16:12:56
【问题描述】:
无法理解如何正确继承对象。有我的代码:
#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();
}
所以,我想扩展类,创建这个扩展类的实例,并将这个实例放入基类的向量中。 然后我想遍历向量中的元素,并调用子类函数。无法理解我做错了什么。
【问题讨论】:
-
当出现问题时,您必须描述什么是错误的?有编译器错误吗?如果是,请在您的问题中显示(复制并粘贴到那里)。代码行为是否错误?然后描述您预期的行为以及您看到的行为。
-
Element的向量只能存储Element类的对象。ExtendedElement extendedElement = new ExtendedElement();也是无效的,因为右边部分会产生一个指针。
标签: arduino