Могу ли я вернуть копию в качестве ссылки? - PullRequest
0 голосов
/ 31 марта 2019

У меня есть виртуальный метод, который возвращает константную ссылку на объект.В одном из производных классов мне нужно вернуть значение.Можно ли вернуть копию при использовании типа возврата константной ссылки?

Вот что я пытаюсь сделать (упрощенный код, потому что он более сложный):

const Object& method(){
  Object object;
  //...
  return object; //Wrong, returning reference to local variable.
}

Я пыталсяиспользовать статическое значение таким образом:

const Object& method(){
  static Object object;
  object = Object();
  //...
  return object;
}

Это самое простое решение, но не очень элегантное.

1 Ответ

1 голос
/ 31 марта 2019

У меня есть виртуальный метод, который возвращает константную ссылку на объект.В одном из производных классов мне нужно вернуть значение.

Решение: Измените свой дизайн так, чтобы

  • Тип возвращаемого значения не являлся ссылкой или
  • Производный класс не должен возвращать значение.

В противном случае производный класс не соответствует интерфейсу, который он наследует.

Могу ли я вернуть копию какссылка?

Вы можете вернуть ссылку на объект, который является копией другого объекта.Но вам нужно где-то хранить объект, ссылку на который вы возвращаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...