2

为什么我不能定义这个函数,

int *clone() const &
{ 
    return new int(10); 
}

或者

int x;
int *clone() const &&
{ 
    return new int(std::move(x)) ; 
}

我应该能够添加 const 限定符函数。我应该包含任何标题吗?

4

3 回答 3

3

我是 C++ 新手,我和你有同样的错误。我编译了来自 C++ Primer 5th Edition 的示例代码,其中描述了参考限定符。但是,我的 GNU 编译器显示错误。我想当前的编译器不支持 C++11 中引入的这个新特性。而且似乎没有多少人知道这一点,因为在互联网上可以找到的信息很少。也许以后的编译器会支持这个特性。

许多 c++11 特性不被支持......我以前遇到过一些。

这是示例代码的一部分,与您的类似:

Foo sorted() &&;
Foo sorted() const &
于 2013-08-04T14:56:50.020 回答
0

因为函数名之后的任何限定符都适用于这个指针。如果你想使这个指针保持不变,
你应该通过以下方式进行重载: int *clone() const

于 2013-06-19T07:50:24.620 回答
0

您可以在参数上使用右值引用,例如在移动赋值或移动构造函数中。似乎 clang 一直在尝试一个名为“称为“*this 的右值引用”的扩展,但我建议你先通过移动构造函数和赋值运算符。

于 2013-06-19T09:06:23.773 回答