我需要使用包含一些不可复制类的代码库。他们已经将他们的赋值运算符和复制构造函数声明为私有(private)的。如何在我的类中初始化这些类型的成员?例如:
class non_copyable; // defined somewhere.
// constructor receives a parameter of type `normal_class'
// my_class.hpp
class my_class {
public:
my_class();
virtual ~my_class();
private:
normal_class good_one;
non_copyable trouble;
};
my_class::my_class() :
good_one(normal_class(0,0)),
trouble(non_copyable(good_one)) { // ====> error
}
目前我在 my_class
中使用指向 non_copyable
的指针。
最佳答案
你在这里调用复制构造函数,因为你正在从一个临时的 non_copyable
实例构造 trouble
:
trouble(non_copyable(good_one))
// ^^^ temporary non_copyable.
试试这个:
trouble(good_one)
关于c++ - 初始化不可复制的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108813/