参考限定符中的错误

时间:2013-06-19 07:44:30

标签: c++ const qualifiers

为什么我无法定义此功能,

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

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

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

3 个答案:

答案 0 :(得分:3)

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

许多c ++ 11功能尚未得到支持......我之前见过一些。

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

Foo sorted() &&;
Foo sorted() const &

答案 1 :(得分:0)

因为函数名后面的任何限定符都适用于此指针。 如果你想使这个指针恒定 你应该通过:int * clone()const

进行重载

答案 2 :(得分:0)

您可以在参数上使用r值参考,例如在移动赋值或移动构造函数中。 似乎clang一直在为{this“'尝试extension被称为'被调用'的右值参考,但我建议你首先使用move构造函数和赋值运算符。