В следующем коде _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 через вызов функции?
_myFoo
не является переменной, она возвращает функцию const Foo&
и не принимает никаких параметров. Либо измените объявление _myFoo (и, возможно, поместите его внутри struct Foo), либо верните _myFoo(); и дать _myFoo
определение.
Обратите внимание, что если myFoo действительно должен быть функцией, вы не должны префикс его подчёркивать, так как я верю, что имена функций, начинающиеся с символов подчеркивания, зарезервированы.
_myFoo
_myFoo
является функцией, аналогичнойGetMyFoo
, и использует зарезервированный идентификатор.