背景
我有一段具有以下特征的代码:
IO
std::ifstream
由于成员而不可复制的类Foo
具有 NamedConstructor 的类,喜欢调用复制构造函数
问题
有没有一种模式可以让我将 NamedConstructor 保存在 Foo 中(或类似的东西),但我仍然可以将不可复制的成员插入到 Foo 中?
我欢迎 C++11 功能/解决方案。
测试代码
#include <fstream>
class IO
{
std::ifstream m_ifs; // due to this instance, IO is not copyable
};
// #define NEXT_LINE_REQUIRES_IO_MC
class Foo
{
#ifdef NEXT_LINE_REQUIRES_IO_MC
IO m_io;
#endif
public:
static Foo NamedConstructor() {
return Foo();
}
private:
Foo() { }
};
int
main( int argv, char* argc[] )
{
Foo f = Foo::NamedConstructor();
}