首先,对不起我的英语,我是加拿大法国人。
我有一个功课要做:单人纸牌游戏。问题是我陷入了强制性的枚举步骤。我需要使用enum作为我的卡片。
以下是代码:
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_ */
每次我想在我的Carte.cpp中访问私有枚举(Sorte m_sorte和Valeur m_valeur)时,它会给我以下错误:
符号'm_valeur'无法解析
或
'carte'未在此范围内声明
我真的不知道它为什么告诉我这个,我包含.h文件所以它不应该知道并且能够使用我的枚举?我在互联网上搜索了很多,我发现有人说我需要创建一个对象。但是,由于我的Carte.h和Carte.cpp是一个对象类,如何创建一个我的Carte类甚至不编译的Carte对象?
如果我不清楚,再次感谢和抱歉!
答案 0 :(得分:2)
cpp
文件中的方法未指定为类的方法。您需要在其定义中指定类名,例如:
Carte::Valeur Carte::lireValeur() const
某些返回的枚举类型也没有使用类名限定,例如。在这个例子中固定的那个不是。返回的类型需要完全限定,因为方法的范围(它们所在的类)尚不清楚;或者您可以使用替代函数语法,其中在方法名称之后指定返回类型,以便知道范围:
auto Carte::lireValeur() const -> Valeur
在我的示例中还修复了const
限定符用于方法(因此它位于方法名称之后),而不是返回类型。