2013-09-24 105 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; 
} 

我使用Visual C++ 2010 Express和我不能編譯這一點,因爲錯誤是: 「錯誤:聲明是不兼容的 「雙流::的getRate(COLOR彩色)」

有我錯過了什麼,或者我有些困惑的命令?

在此先感謝。

+0

它似乎編譯沒有問題:http://codepad.org/OUS36Z3g – duDE

+0

更多的C++寫你的枚舉的方式是'枚舉顏色{...};'。但是,您所提供的代碼在所有三個版本的Visual Studio中編譯都很好,這表明問題是您沒有粘貼的代碼中存在衝突。 – kfsone

+0

@kfsone我把這個作爲一個單獨的頭文件在一個項目中,甚至沒有其他的東西,包括它,intellisense告訴我這個錯誤。 – user2812288

回答

1

enum COLOUR 
{ 
    YELLOW, 
    GREEN, 
    BLUE 
}; 

代替。您使用的typedef成語(以不完整的方式)是C兼容性,從您的標記中,您不需要該成分。

+0

但在這種情況下,OP應寫入雙getRate(枚舉COLOR顏色);或者我錯了? – duDE

+0

這是真的,但是,這是一個答案? – Manu343726

+0

@duDE不,你錯了。他沒有在所有的 – Manu343726