引用限定符错误

error in reference qualifier

本文关键字:错误 引用      更新时间:2023-10-16

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

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

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

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

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

许多c++11的特性还没有被支持…我以前见过一些。

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

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

可以在参数上使用r值引用,例如在move赋值或move构造函数中。似乎clang一直在尝试一个名为"称为*this的右值引用"的扩展,但我建议您先通过move构造函数和赋值操作符工作。

因为函数名之后的任何限定符都适用于该指针。如果你想让这个指针为常量
你应该这样做:int *clone() const