#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
等复制它的类型转换),因此无法实现,因此无法实现多态性。使用模板可能是一个好主意,但是,它定义了多个class
es Foo<typename BarType>
,因此,做 afunction
是changeBar(BarParent)
不可能的,因为编译器会将 thischangeBar(BarType)
定义为仅为 class 定义Foo<Bartype>
。如果有人有更好的主意,请告诉我。
我想我将不得不去堆或const Barparent
指针。如果是用户const_cast
,那是他自找麻烦,不是我的错!