このような複数のコンストラクターを持つコピー不可能なクラスがあるとします
class Foo: boost::noncopyable
{
public:
Foo(std::string s) {...}; // construct one way
Foo(int i) {...}; // construct another way
}
ここで、オブジェクトを作成し、実行時に使用するコンストラクターを選択します。
私はこのようなポインタでそれを行うことができます:-
boost::shared_ptr<Foo> f;
if (condition)
f.reset(new Foo(myString));
else
f.reset(new Foo(myInteger));
// common code follows
f->doSomethingComplicated(...);
しかし、それは面倒で遅いと感じます。動的割り当てに頼らずにオブジェクトのコンストラクターを選択する簡単な方法はありますか?
詳細: 上記のFoo
クラスは単に問題を説明するためのものです。実際に関係するクラスは Windows ですGdiplus::Bitmap
- http://msdn.microsoft.com/en-gb/library/windows/desktop/ms534420(v=vs.85)。 aspx