2013-11-25 5 views
1

내 컴파일러 (아래 그림 참조) 다른 클래스의 private 멤버로 물체의 내 선언은 나에게이 오류 제공 불평하는 클래스의 private 멤버로 파생 된 개체를 선언 할 때 :컴파일 오류

private:

ForwardStrategy::ForwardStrategy* forwardStrategy; 

    ForwardToStrategy::ForwardToStrategy* forwardToStrategy; 

을 /home/ics45c/projects/p4/src/Person.hpp:45:19 : 오류 : 'ForwardStrategy'에 대한 정규화 된 참조가 생성자가되었습니다. ForwardStrategy :: ForwardStrategy * forwardStrategy; 생성자가 선언 된 형식이 아닌 형식입니다. ^ /home/ics45c/projects/p4/src/Person.hpp:47:21 : 오류 : 'ForwardToStrategy'에 규정 된 참조는 생성자 이름이 아닌 생성자가 ForwardToStrategy를 선언 할 수있는 곳 유형입니다 :: ForwardToStrategy * forwardToStrategy; ^

2 개의 오류가 생성되었습니다. ... ... 끔찍한 형식에 대한

죄송 컴파일러는 내가 생성자가 아닌 유형 말하는 겁니다 생각처럼

그래서 그것은 보이는,하지만 난 문제를 해결하는 방법을 잘 모르겠어요 I 이 작업을 올바르게 수행하는 방법을 잘 모르겠지만 미리 감사드립니다! 이 질문에 표기되는 방법은이 클래스의 인스턴스를 정의하지 않는 (생성자 함수 인) 멤버에 액세스하려고 의미하기 때문에

private: 

ForwardStrategy* forwardStrategy; 

ForwardToStrategy* forwardToStrategy; 

:

+2

'ForwardStrategy :: ForwardStrategy * forwardStrategy; '대신에'ForwardStrategy * forwardStrategy;'라고 써 넣으면 마지막으로 클래스 자체가 아닌 클래스의 멤버를 참조하기 때문에 –

답변

1

그냥가로 변경합니다.

+0

더 나쁜 정보를 추가해야한다고 생각합니다. 전략은 자체 헤더 파일에 있으며, 내 파일 상단에 포함합니다. – MattDella

+1

@ user3029740, 헤더가 동일하지 않습니다. 네임 스페이스 또는 네임 스페이스를 암시 적으로 추가하지 않습니다. T-D에서 제안한 것을 시도 했습니까? 무슨 일 했니? 무엇이 효과가 없었습니까? – chwarr

+0

문제가 해결되었습니다. 분명히 내 헤더 중 하나에서 #include를 삭제하는 것을 잊었 기 때문에 순환 포함에 문제가있었습니다. 그래도 도와 ​​줘서 고마워! – MattDella