ポインタthisを初期化するために使用するクラスがあります。void*しかし、問題は、そのクラスのインスタンスを値で渡すと、ポインターがスタック上の新しいアドレスに変更されないことです。そこで、コピーコンストラクターをオーバーライドして、ポインターを新しいアドレスの。に再割り当てすることを考えましたthis。しかし、私は通常コンストラクターパラメーターによって取得するスーパークラスコンストラクターを呼び出すための変数が必要ですが、コピーコンストラクターにはそれらがありません...
私はよく説明したと思います...
したがって、問題は次のとおりです。ポインタの再割り当ての部分を追加するデフォルトのコピーコンストラクタの手順を維持できますか?または、より良い選択肢はありますか?
ありがとう
ここにいくつかのコードがあります:
class GetsCopiedByValue : public SuperClass
{
GetsCopiedByValue(Type1 *t1, Type2 *t2, float var1, /* A lot of other things I need */) :
SuperClass(t1, t2), var1(var1)
{
t1->set_GetsCopiedByValue_Address(this); // ***
}
}
何処か別の場所:
{
GetsCopiedByValue instance (t1, t2, 4.64, /* All the other things */);
SomeType *t = new SomeType(instance); // <-- here, it gets copied by value,
} // but the original "instance" goes (here) out of scope and the address
// I assigned (***) is not longer valid, so I have to
// reassign the address to the new address, after copying it.