我正在阅读关于移动构造函数的文章,我在VS2013中做了这段代码……
class Student
{
unique_ptr<string> pName_;
public:
Student(string name) : pName_(new string(name)) { }
~Student() { }
Student(Student&&) = default; // Here I get the error.
void printStudentName(void) { cout << *pName_ << endl; }
};
int main(void)
{
vector<Student> persons;
Student p = Student("Nishith");
persons.push_back(std::move(p));
persons.front().printStudentName();
return 0;
}
当我试图编译它时,我得到了"Student::Student(Student&& )
:不是一个可以默认的特殊成员函数“……
谁能给我解释一下为什么会出现这个错误?
发布于 2014-07-04 20:10:56
因为VS2013编译器不支持默认的移动构造函数。
请参阅以下注释from MSDN
按照C++11标准的要求,
Visual Studio不支持默认的移动构造函数或移动赋值运算符。有关详细信息,请参阅Support For C++11 Features (Modern C++)的默认函数和已删除函数部分。
https://stackoverflow.com/questions/24573963
复制相似问题