【发布时间】:2016-04-28 12:30:26
【问题描述】:
我正在开发一个功能有限的嵌入式平台,因此向量/STL 不可用。
这可能是一个微不足道的问题,但我在 C++ 方面没有太多经验(只有 C 和 C#,这可能使我对明显的 C++ 方法视而不见)。
考虑以下示例:
class Parent {
};
class Child : public Parent {
};
void Test(Parent* parents, uint8_t parentCount) {
// Accessing parent[x] is problematic when 'parents' contains a derived type
}
int main() {
// This is OK
Parent parents[3];
Test(parents, 3);
// This causes problems
Child children[3];
Test(children, 3);
return 0;
}
如果提供了一个指向派生类数组的指针,那么在 Test() 中迭代 parents 显然是有问题的,因为 的内存占用在迭代期间假定父代。
我看到的唯一解决方案是传递 Parent 类型的指针数组(Parent** 父母),但这似乎很麻烦。是否有一些我不知道的 C++ 机制,比如将数组作为引用传递或其他什么?
【问题讨论】:
-
让
Test成为模板函数?使用指针数组(不是我真的推荐它,除非你的类是多态的)。解决方案(这些或其他)很大程度上取决于用例。
标签: c++ c++11 embedded avr-gcc