2013-04-15 1 views
0

FlipIt 게임 프로그램을 작성하려고하는 C++ 코드 작업 중입니다. 헤더 파일과 .cpp 파일이 있습니다. 헤더 파일에서 함수 중 하나가 enum 유형 함수 인 flipit 클래스가 있습니다. 헤더 파일 FlipIt.h 예를 들면 :C++ enum type을 함수로 사용합니다.

(열거 형 선언)

enum Color { clear_ = false, solid_ = true }; 

FlipIt.cpp이 파일에서

Color fetch(int row, int col) const; 

(나는 기능을 구현 무엇인가 (기능) 같은 클래스) 나는이 작업을 수행 할 때

int FlipIt::fetch(int row, int col) const 

는 VS2010는 말합니다에서 인텔리 : 선언 FlipIt "와 호환되지 않습니다 : : Color FlipIt :: fetch (int row, int col) const "

이것은 무엇을 의미합니까?

답변

1

귀하의 신고서에 귀하의 약속 반환 값 FlipIt::Color가 귀하의 구현에서 제공 한 유형과 다른 것을 의미합니다. enumint이 아닙니다.
는 구현

FlipIt::Color FlipIt::fetch(int row, int col) const { } 

을보십시오.

+0

내 구현을 위해 FlipIt.h의 FlipIt 클래스에 선언 된 멤버 함수가 여전히 선언 된 멤버 함수입니다. –

+0

물론 그렇습니다. 나에게는 그다지 명백하지 않았다! –

2

그러나 Colorint이 아닙니다. 그것은 enum이고 일부 기본 유형 (컴파일러에 따라 다름)이 있지만 어쨌든 다른 유형입니다.

0

cpp 파일이 아니라 헤더 파일에 enum이 정의 된 enum 유형을 구별해야합니다. 당신은 헤더 파일을 포함, 링커는 정의의 유형을 찾을 수 있습니다, 당신이 클래스에서 정의하는 경우, 당신은 클래스 접두사를 추가해야합니다. 링커는 유형 정의를 찾을 수 있습니다. 그래서 enum 유형이 전역 영역에 정의되어 있으면 문제가 없습니다. 클래스에서 정의한 경우 "Class :: Type"을 사용해야합니다.