C++で何かする方法が不思議でした。私はこの構造体のインスタンスを作成できるようにしたいです派生構造体と親構造体へのC++キャスト
struct ComplexInstruction : simple_instr
{
bool isHead;
bool isTail;
};
simple_instrインスタンスからすべてのデータをコピーします。だから、基本的に、私はこの
ComplexInstruction cInstr = instr; // <- instance of simple_instr
のような何かをしたいと(それらの多くがありますので)すべてのフィールドをコピーすることなく、INSTR内のすべてのデータのコピーを持ってcInstrを持っています。どのようにこれを行うかわからない、と私は単純なキャスティングが動作するとは思わない。さらに、その逆を行うことは可能ですか?私。 ComplexInstructionのインスタンスを持って、それをsimple_instrのインスタンスに変換します。私は、これは鋳物を使用して行うことができますが、私はドンと仮定し、tは、事前に
おかげで、C++の経験がたくさんある
これは、ベースによって提供されるデフォルトのコピーctorが十分であることを前提としています。そうでなければ、別のものを定義する必要があります。 –
+1これは最高の解決策です(実際には正しいものです)。基底のデフォルトのコピーコンストラクタが十分でない可能性のある問題は、それ自体の問題であり、この特定の質問とは無関係です。 (わずかな改善は、 'Base'コピーコンストラクタの本体での代入の代わりに初期化リストを使用することです) –
解決策は問題ありませんが、しばしば1パラメータの非コピーコンストラクタを明示的にします。 – Philipp