Rod*_*ddy 12 c++ boost noncopyable multiple-constructors
假设我有一个不可复制的类,其中包含多个类似的构造函数
class Foo: boost::noncopyable
{
public:
Foo(std::string s) {...}; // construct one way
Foo(int i) {...}; // construct another way
}
Run Code Online (Sandbox Code Playgroud)
现在,我想构造一个对象,并选择在运行时使用哪个构造函数:
我可以用这样的指针做到: -
boost::shared_ptr<Foo> f;
if (condition)
f.reset(new Foo(myString));
else
f.reset(new Foo(myInteger));
// common code follows
f->doSomethingComplicated(...);
Run Code Online (Sandbox Code Playgroud)
但这感觉很麻烦而且很慢.是否有一种简单的方法可以选择对象的构造函数而无需动态分配?
更多细节:Foo上面的类只是为了说明问题.涉及的实际类是Windows Gdiplus::Bitmap- http://msdn.microsoft.com/en-gb/library/windows/desktop/ms534420(v=vs.85). ASPX
小智 1
你的设计有缺陷。“Foo”将类型省略委托给类的用户。看看 boost::any ( http://www.boost.org/doc/libs/1_55_0/doc/html/any.html )
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |