Возврат константной ссылки в C ++

0

В следующем коде _myFoo является константой ссылки на объект типа Foo.

struct Foo
{
};

const Foo& _myFoo();

const Foo& GetMyFoo()
{
    return _myFoo;
}

Когда я пытаюсь скомпилировать его, я получаю следующую ошибку:

error: invalid initialization of reference of type 'const Foo&' 
from expression of type 'const Foo& (*)()'

Что я делаю не так? Есть ли способ вернуть _myFoo через вызов функции?

  • 1
    Вы забыли скобки при вызове _myFoo
  • 0
    _myFoo является функцией, аналогичной GetMyFoo , и использует зарезервированный идентификатор.
Теги:

1 ответ

5
Лучший ответ

_myFoo не является переменной, она возвращает функцию const Foo& и не принимает никаких параметров. Либо измените объявление _myFoo (и, возможно, поместите его внутри struct Foo), либо верните _myFoo(); и дать _myFoo определение.

Обратите внимание, что если myFoo действительно должен быть функцией, вы не должны префикс его подчёркивать, так как я верю, что имена функций, начинающиеся с символов подчеркивания, зарезервированы.

  • 1
    Это не только имена функций, но и глобальные имена. Функции внутри класса или объявленные в функции - это «хорошо» с подчеркиванием в начале, «хорошо», что это не очень популярный стиль.
  • 0
    Doh! Извиняюсь за вопрос новичка. Спасибо за помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню