0

我一直在谷歌搜索和阅读这方面的内容,但还没有找到答案,也许有人可以帮我解决这个问题。

我得到的错误是: '{' 标记之前的预期类名

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

卡特.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

我得到的错误是:在我之前指出的“{”标记之前的预期类名

4

2 回答 2

5

首先,friend声明应该是

friend class Partie;

其次,您需要包含<string>标题,没有尾随.h. 那就是std::string定义的地方。

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

另一种可能性是;CarteCarte.h.

于 2013-04-30T09:24:18.140 回答
0

您的friend声明不正确。

查看正确的格式:

class Carte_num : public Carte
{       
    // ...    
    friend class Partie; 
};
于 2013-04-30T09:31:29.140 回答