我一直在谷歌上搜索并阅读此内容并没有得到答案,也许有人可以帮我解决这个问题。
我得到的错误是:'{'token
之前的预期class-name#ifndef CARTE_NUM_H
#define CARTE_NUM_H
#include <string.h>
#include <iostream>
#include "Carte.h"
using namespace std;
class Partie;
class Carte_num : public Carte
{ //<--------------this is where I get the error
public:
Carte_num(int haut,string typ, char coul [8], int nb_p);
~Carte_num();
protected:
int hauteur;
public:
friend Partie;
};
#endif // CARTE_NUM_H
#ifndef CARTE_H
#define CARTE_H
#include <iostream>
#include <string.h>
#include "Partie.h"
using namespace std;
class Joueur;
class Partie;
class Carte
{
public:
Carte();
Carte( string typ, char coul [8], int nb_p);
~Carte();
protected:
char couleur[8];
int nb_pts;
string type;
public:
//bool action(Partie p);
string definir();
bool est_valable(Partie p);
//int getnb_pts() { return(nb_pts);}
friend class Joueur;
friend class Partie;
};
#endif // CARTE_H
我得到的错误是:'{'标记之前的预期类名,我指出了更早的
答案 0 :(得分:5)
首先,friend
声明应为
friend class Partie;
其次,您需要包含<string>
标头,而不是尾随.h
。这就是定义std::string
的地方。
第三,您可以拥有循环包含依赖项,例如Partie.h
包括Carte.h
或Carte_num.h
。您可以通过从#include "Partie.h"
删除Carte.h
来解决此问题(您可能需要将其包含在Carte
的实施文件中)。
另一种可能性是,您在;
中的Carte
声明后发现Carte.h
。{/ p>
答案 1 :(得分:0)
您的friend
声明不正确。
请参阅正确的格式:
class Carte_num : public Carte
{
// ...
friend class Partie;
};