一部のデータの汎用パーサーである基本クラスがあり、パーサーに含まれるデータへの特定のアクセス インターフェイスを提供する複数の派生クラスがあります。派生クラスのタイプは、階層に依存するため、すべてのデータが解析された後にのみ決定できます (基本クラスのツリーがあり、各ベースの派生クラスを決定するために完全に設定する必要があります)。
データの不必要なコピーを避けて、基本クラスから派生クラスを作成する最良の方法は何ですか? 今のところ、ベースのコピーコンストラクターを使用して派生を作成しています(以下のように):
class Base
{
};
class Derived : public Base
{
Derived(const Base &base)
: Base(base)
{
}
};
、しかし、これには必要のないすべての基本データをコピーする必要があります-可能であれば、基本クラスをコピーして削除せずに派生させたいです。
編集:
ベース パーサーはデータ ファイルを解析し、データを一般的に map > として保存します。一方、派生クラスは、保存された実際のデータ型に応じて特定のアクセス インターフェイスを提供します。派生クラスは変更される可能性があり、さらに追加される可能性があります。