'{'标记c ++之前的预期类名

时间:2013-04-30 09:22:48

标签: c++

我一直在谷歌上搜索并阅读此内容并没有得到答案,也许有人可以帮我解决这个问题。

我得到的错误是:'{'token

之前的预期class-name

Carte_num.h

#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

Carte.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

我得到的错误是:'{'标记之前的预期类名,我指出了更早的

2 个答案:

答案 0 :(得分:5)

首先,friend声明应为

friend class Partie;

其次,您需要包含<string>标头,而不是尾随.h。这就是定义std::string的地方。

第三,您可以拥有循环包含依赖项,例如Partie.h包括Carte.hCarte_num.h。您可以通过从#include "Partie.h"删除Carte.h来解决此问题(您可能需要将其包含在Carte的实施文件中)。

另一种可能性是,您在;中的Carte声明后发现Carte.h。{/ p>

答案 1 :(得分:0)

您的friend声明不正确。

请参阅正确的格式:

class Carte_num : public Carte
{       
    // ...    
    friend class Partie; 
};