ошибка в ссылочном квалификаторе

Почему я не могу определить эту функцию,

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

или же

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

Я должен быть в состоянии добавить const квалификатор функции. Должен ли я включить какие-либо заголовки?

2

Решение

Вы можете использовать ссылку на значение r для параметров, например, в назначении перемещения или конструкторе перемещения.
Кажется, лязг пытается расширение называется «называется» Rvalue ссылка для * этого «, но я предлагаю вам работать через переехать сначала конструкторы и операторы присваивания.

0

Другие решения

Я новичок в C ++, и я в той же ошибке с вами.
Я скомпилировал пример кода из C ++ Primer 5th Edition, в котором описывался ссылочный классификатор. Однако мой компилятор GNU показал мне ошибку. Я полагаю, что современные компиляторы не поддерживают эту новую функцию, представленную в C ++ 11. И, похоже, мало кто знает об этом, потому что в Интернете можно найти очень мало информации. Возможно, позже компиляторы будут поддерживать эту функцию.

Многие функции C ++ 11 не поддерживаются … Я встречал некоторые раньше.

Это часть примера кода, похожая на вашу:

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

Потому что любой указатель после имени функции применяется к этому указателю.
если вы хотите сделать константой этот указатель
Вы должны просто сделать перегрузку: int * clone () const

0
По вопросам рекламы [email protected]