私の必要性は、他のものに類似の構造を割り当てることです。ちょうど名前が異なります。 同じ名前の場合は、=(代入)を直接使用できます。 私はビットをコピーするので、memcopyを使用したくありません。異なるタイプの2つの構造を割り当てることは可能ですか?
struct first{
int i;
char c;
}
struct second{
int i;
char c;
//we can overload assignment operator to copy field.
void operator = (struct first& f)
i=f.i;
c=f.c;
}
int main()
{
struct first f;
f.i=100;
f.c='a';
struct second s=f;
}
コンパイルエラーです。 エラー:「最初」から非スカラー型「秒」への変換が要求されました。
可能かどうかわかりません。
ここでは割り当てません。あなたはオブジェクトをコピーしています。だからコピーコンストラクタが必要です –
初期化!=割り当て。 'first'を引数とする' second'のコンストラクタを書くか、 'first'の中で' second'に変換演算子を書いてください。 –
あなたはcast-through-a-unionイディオムを使うこともできますし、コンパイラがあなたのコードを壊す可能性のあるエイリアシング最適化を行わないようにすることもできます。または単にmemcpy、非常にブルートフォース。 –