コンストラクターでクラスのメンバーを初期化するときに、同じ一時を複数のポイントでどのように使用できますか?
例:
// for arbitrary T1, T2, T3
T2 foo(T1 const&);
T3 bar(T1 const&);
struct A {
T2 const t2;
T3 const t3;
A() : t2(foo(T1())), t3(bar(T1())) {}
};
これは非常に単純化された例ですが、t2
とt3
は両方とものインスタンスに応じて作成されますT1
。そのオブジェクトを両方の初期化で正確に同じにしたい場合*、名前がないため、問題が発生します。C ++ 11のconstructor-calls-constructor機能を使用せずに、または呼び出すダミークラスを追加せずに、これを解決する方法を知っていますA(T1())
か?
*そのようです:
A(T1 const& t1) : t2(foo(t1)), t3(bar(t1)) {}
動機:オブジェクトのアドレスが重要で、との両方で同じオブジェクトについて話さなければならT1()
ないような、実際にはのようなものである場合はどうなりますか。new T()
t2
t3