2014-02-23 4 views
0

다음 코드에서 _myFoo는 Foo 유형의 객체에 대한 const 참조입니다. C++에서 const 참조 반환

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'를 호출 할 때 괄호를 잊어 버렸습니다. – Brian

+0

'_myFoo'는'GetMyFoo'와 같은 함수이며 예약 된 식별자를 사용합니다. – chris

답변

5

_myFoo은 변수가 아니며 const Foo&을 반환하는 함수이며 매개 변수를 사용하지 않습니다. _myFoo 선언을 변경하거나 (아마도 Foo 구조체에 넣을 수도 있습니다.) 또는 _myFoo();를 반환합니다. _myFoo 정의를 제공하십시오.

myFoo가 실제로 함수로되어있는 경우, 밑줄로 시작하는 함수 이름이 예약되어 있으므로 밑줄로 접두사를 사용하지 마십시오.

+1

특히 함수 이름이 아니라 전역 이름입니다. 클래스 내부의 함수 또는 함수에서 선언 된 함수는 "밑줄"이있는 "괜찮은"것이고, 특히 "인기있는"스타일이 아닌 "훌륭한"것입니다. – chris

+0

Doh! 초급 질문에 사과드립니다. 도와 주셔서 감사합니다. – INB