#include <iostream>
class BarParent
{
virtual void fuz()
{
std::cout << "BarParent" << std::endl;
}
};
class BarChild : public BarParent
{
virtual void fuz()
{
std::cout << "BarChild" << std::endl;
}
};
class Foo
{
// ??BarParent bar;??
public:
Foo(BarParent bar);
};
我寻求的是存储传递给构造函数的副本并BarParent让它驻留Foo,同时仍然调用正确的virtual function
这是一个嵌入式应用程序:堆的使用是不受欢迎的。所以最好不要堆
摘要:据了解,由于切片问题(长话短说编译器无法确定泛型的大小Bar等复制它的类型转换),因此无法实现,因此无法实现多态性。使用模板可能是一个好主意,但是,它定义了多个classes Foo<typename BarType>,因此,做 afunction是changeBar(BarParent)不可能的,因为编译器会将 thischangeBar(BarType)定义为仅为 class 定义Foo<Bartype>。如果有人有更好的主意,请告诉我。
我想我将不得不去堆或const Barparent指针。如果是用户const_cast,那是他自找麻烦,不是我的错!