在编译器尝试使用拷贝构造函数而不是移动构造函数的情况下,可以通过以下方法解决:
class MyClass {
public:
// 移动构造函数
MyClass(MyClass&& other) {
// 移动资源
}
// 拷贝构造函数
MyClass(const MyClass& other) {
// 拷贝资源
}
};
void foo(MyClass obj) {
// ...
}
int main() {
MyClass obj;
foo(std::move(obj)); // 显式使用std::move()函数将obj转换为右值
return 0;
}
class MyClass {
public:
// 移动构造函数
MyClass(MyClass&& other) {
// 移动资源
}
private:
// 拷贝构造函数(私有化)
MyClass(const MyClass& other) {
// ...
}
};
使用这种方法,如果编译器尝试使用拷贝构造函数,将会产生一个编译错误。这迫使编译器使用移动构造函数。
上一篇:编译器不知道特质提供的方法