Почему я не могу определить эту функцию,
int *clone() const &
{
return new int(10);
}
или же
int x;
int *clone() const &&
{
return new int(std::move(x)) ;
}
Я должен быть в состоянии добавить const квалификатор функции. Должен ли я включить какие-либо заголовки?
Вы можете использовать ссылку на значение r для параметров, например, в назначении перемещения или конструкторе перемещения.
Кажется, лязг пытается расширение называется «называется» Rvalue ссылка для * этого «, но я предлагаю вам работать через переехать сначала конструкторы и операторы присваивания.
Я новичок в C ++, и я в той же ошибке с вами.
Я скомпилировал пример кода из C ++ Primer 5th Edition, в котором описывался ссылочный классификатор. Однако мой компилятор GNU показал мне ошибку. Я полагаю, что современные компиляторы не поддерживают эту новую функцию, представленную в C ++ 11. И, похоже, мало кто знает об этом, потому что в Интернете можно найти очень мало информации. Возможно, позже компиляторы будут поддерживать эту функцию.
Многие функции C ++ 11 не поддерживаются … Я встречал некоторые раньше.
Это часть примера кода, похожая на вашу:
Foo sorted() &&;
Foo sorted() const &
Потому что любой указатель после имени функции применяется к этому указателю.
если вы хотите сделать константой этот указатель
Вы должны просто сделать перегрузку: int * clone () const