首先,對不起我的英文,我是法語加拿大人。從.cpp文件中的頭文件讀取枚舉(C++)
我有作業要做:紙牌遊戲。問題是我堅持強制枚舉步驟。我需要爲我的卡片使用枚舉。
下面的代碼:
Carte.h:
#ifndef CARTE_H_
#define CARTE_H_
class Carte
{
public:
enum Sorte
{
coeur, pique, carreau, trefle
};
enum Valeur
{
as, valet, dame, roi
};
Carte (Sorte& pSorte, Valeur& pValeur);
Sorte lireSorte () const;
Valeur lireValeur () const;
bool ecrireSorte (Sorte& pSorte);
bool ecrireValeur (Valeur& pValeur);
static bool validerSorte (const Sorte& pSorte);
static bool validerValeur (const Valeur& pValeur);
private:
Sorte m_sorte;
Valeur m_valeur;
};
#endif /* CARTE_H_ */
而這裏的Carte.cpp:
#include "Carte.h"
using namespace std;
Carte::Carte(Sorte& pSorte, Valeur& pValeur)
{
m_sorte = pSorte;
m_valeur = pValeur;
};
Carte::Sorte const lireSorte()
{
return m_sorte;
};
Valeur const lireValeur()
{
return m_valeur;
};
bool ecrireSorte(Carte::Sorte& pSorte)
{
bool donneeValide = validerSorte(pSorte);
if (donneeValide)
{
m_sorte = pSorte;
}
return donneeValide;
};
bool ecrireValeur(Valeur& pValeur)
{
bool donneeValide = validerValeur(pValeur);
if (donneeValide)
{
m_valeur = pValeur;
}
return m_valeur;
};
static bool validerSorte(const Sorte& pSorte)
{
return (pSorte == coeur || pSorte == pique || carreau || trefle);
};
static bool validerValeur(const Valeur& pValeur)
{
return ((pValeur >= 2 && pValeur <= 10) || (pValeur == as || pValeur == valet || pValeur == dame || pValeur == roi));
};
#endif /* CARTE_H_ */
每次我想訪問私有枚舉(Sorte m_sorte和Valeur m_valeur)在我的Carte.cpp中,它給我以下錯誤:
Symbol 'm_valeur' could not be resolved
或
‘carte’ was not declared in this scope
我真的不知道爲什麼它在告訴我這個,我包括.h文件所以是不是應該知道和能夠使用我的枚舉?我在互聯網上搜索了很多,我發現有人說我需要創建一個對象。但是,由於我的Carte.h和Carte.cpp是一個對象類,我怎麼能創建一個Carte對象,我的Carte類甚至不能編譯?
如果我不清楚,謝謝並再次抱歉!
感謝您的回答! 糟糕,我不知道發生了什麼,但#endif在我的.h文件中。 我指定的類這樣的「Valeur常量全權:: lireValeur()」,但現在它說:「在這一行 \t多個標記 - 類型‘Valeur’無法解析 \t - 成員聲明沒有找到 \t - 「 「Valeur'沒有指定類型」 – SkAshe 2015-02-11 23:57:00
@StenSoft另外,enum類型需要用範圍限定,當用作返回值時,正如你在示例中已經闡明的那樣(解釋句子很好)。 – 2015-02-12 00:00:22
添加了解釋並修正了錯誤的'const'限定符的位置 – StenSoft 2015-02-12 00:08:21