首先,对不起我的英文,我是法语加拿大人。从.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