#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
esFoo<typename BarType>
を定義します。その結果、コンパイラはこれを class に対してのみ定義されているものとして定義するため、function
などを実行することはできません。誰かがより良いアイデアを持っている場合は、私に知らせてください。changeBar(BarParent)
changeBar(BarType)
Foo<Bartype>
私はヒープ、またはconst Barparent
ポインタに行く必要があると思います。ユーザーがconst_cast
s の場合、彼はトラブルを求めているのであって、私のせいではありません!