2010-03-27 2 views
2

Visual Studio에서 잘 컴파일되지만 Xcode에서는 그렇지 않습니다.gcc가 클래스 선언을 참조 인수로 컴파일하지 않는 이유는 무엇입니까?

class A() 
{}; 

someMethod(A& a); 

someMethod(A()); //error: no matching function call in XCode only :( 

이 나쁜 형태입니까?

A a; 
someMethod(a); //successful compile on Xcode 

오전 내가 모르는 뭔가가 : 다음과 같은 때마다 작성해야하는 성가신 것 같다? 나는 아주 경험이 없기 때문에 어떤 도움을 주셔서 감사합니다!

+5

Microsoft 특정 확장으로 인한 모든 고통 ... 너무 많습니다. –

답변

4

임시가 아닌 참조에 바인드 할 수 없습니다. 그것은 당신이 const를 참조를 취하도록 기능을 변경 한 경우 일 것이다 : 또한

someMethod(const A& a); 

,

A a(); 

로컬 변수를 선언하지 않습니다. 매개 변수를 사용하지 않고 A 유형의 객체를 반환하는 a이라는 함수를 선언합니다. 당신은 의미 :

A a; 
+0

답변과 정정에 감사드립니다.^_ ^ – Jorge

0

someMethod(A())에서 수행 것처럼 (참조가 암시 적으로 얻을 수있는) 우변에 대한 참조를 전달하는 경우, 당신은일정 참조가 필요합니다. 올바른 구문을 포함하여 유효한 선언은 그러므로

void someMethod(const A& a); 
관련 문제