为什么我不能定义这个函数,
int *clone() const &
{
return new int(10);
}
或者
int x;
int *clone() const &&
{
return new int(std::move(x)) ;
}
我应该能够添加 const 限定符函数。我应该包含任何标题吗?
为什么我不能定义这个函数,
int *clone() const &
{
return new int(10);
}
或者
int x;
int *clone() const &&
{
return new int(std::move(x)) ;
}
我应该能够添加 const 限定符函数。我应该包含任何标题吗?
我是 C++ 新手,我和你有同样的错误。我编译了来自 C++ Primer 5th Edition 的示例代码,其中描述了参考限定符。但是,我的 GNU 编译器显示错误。我想当前的编译器不支持 C++11 中引入的这个新特性。而且似乎没有多少人知道这一点,因为在互联网上可以找到的信息很少。也许以后的编译器会支持这个特性。
许多 c++11 特性不被支持......我以前遇到过一些。
这是示例代码的一部分,与您的类似:
Foo sorted() &&;
Foo sorted() const &
因为函数名之后的任何限定符都适用于这个指针。如果你想使这个指针保持不变,
你应该通过以下方式进行重载: int *clone() const
您可以在参数上使用右值引用,例如在移动赋值或移动构造函数中。似乎 clang 一直在尝试一个名为“称为“*this 的右值引用”的扩展,但我建议你先通过移动构造函数和赋值运算符。