2013-09-24 86 views
1

구현하고있는 클래스에 문제가 있습니다.C++ 선언이 메서드와 호환되지 않습니다.

typedef enum 
{ 
    YELLOW, 
    GREEN, 
    BLUE 
} COLOUR; 

class Stream 
{ 
public: 
    Stream(); 
    ~Stream(); 
    double getRate(COLOUR colour); 
private: 
    double yrate; 
    double grate; 
    double brate; 
}; 

Stream::Stream() 
{ 
    yrate = 2.2; 
    grate = 3.3; 
    brate = 4.4; 
} 

Stream::~Stream() 
{ 
} 

double Stream::getRate(COLOUR colour) 
{ 
    double rate; 
    switch(colour) 
    { 
    case YELLOW: 
     rate = yrate; 
     break; 
    case GREEN: 
     rate = grate; 
     break; 
    case BLUE: 
     rate = brate; 
     break; 
    } 
    return rate; 
} 

I 2010 ++ Express를 비주얼 C를 사용하고, 에러이기 때문에 나는이를 컴파일 할 수 없습니다 : '오류 : 선언과 호환되지 않는 "이중 스트림 :: getRate (COLOR 색상)"

가 있는가 내가 놓친 것, 또는 내가 혼란스러워하는 어떤 명령?

미리 감사드립니다.

+0

문제없이 컴파일하는 것 같습니다 : http://codepad.org/OUS36Z3g – duDE

+0

enum을 쓰는 C++ 방법은'enum COLOR {...};'입니다. 그러나 세 가지 버전의 Visual Studio에서 제공 한 코드는 붙여 넣지 않은 코드에서 문제가 발생한다는 점을 보여줍니다. – kfsone

+0

@kfsone 프로젝트에서이 헤더 파일을 별도의 헤더 파일로 가지고 있었고 intellisense는이 파일을 포함하여 다른 어떤 것도없이이 오류를 알려줍니다. – user2812288

답변

1

쓰기

enum COLOUR 
{ 
    YELLOW, 
    GREEN, 
    BLUE 
}; 

대신. 불완전한 방식으로 사용하는 typedef 관용구는 C 호환성을위한 것으로 태그에서 필요하지 않습니다.

+0

그러나이 경우 OP는 double getRate (enum COLOR color)를 써야합니다. 또는 나는 틀린가? – duDE

+0

그게 사실이지만,이 대답입니까? – Manu343726

+0

@duDE 아니, 틀렸어. 그는 열거 형을 전혀 쓰지 않았다. – Manu343726

관련 문제