ошибка наследования: "ожидаемое имя класса перед '{' токеном" » - PullRequest
3 голосов
/ 06 декабря 2010

Я пишу покерную программу, в которой у меня есть два класса - класс Deck и класс Hand.Класс Hand наследуется от класса Deck, поэтому он может использовать свой метод printGroup.Однако при компиляции я получаю сообщение об ошибке:

expected class-name before '{' token

со ссылкой на строку:

 class Hand : public Deck{  

Вот код для двух заголовков классов.Может ли кто-нибудь помочь мне решить эту проблему?

// Ручной заголовок

#ifndef HAND_H
#define HAND_H

#include <iostream>
#include <vector>
#include "Deck.h"
#include "Card.h"

class Card;

class Hand : public Deck{    //error occurs from this line
public:
    Hand(){}
    void createHand(std::vector<Card> &, std::vector<Card> &);
};


#endif /* HAND_H */

// Палубный заголовок

#ifndef DECK_H
#define DECK_H

#include <iostream>
#include <vector>
#include "Card.h"

class Card;

class Deck{
public:
    Deck(){}
    void createDeck(std::vector<Card> &);
    void printGroup(std::vector<Card> &, int);
    void sortDeck(std::vector<Card> &, int, int);
};

#endif /* DECK_H */

1 Ответ

3 голосов
/ 06 декабря 2010

Предполагая, что внутреннее чувство @ marcog, что это циклическая зависимость, корректно (возможно, Card.h включает в себя Hand.h, тем самым импортируя файл Hand.h перед тем, как перейти к объявлению класса Deck), этобыть решено с помощью предварительных объявлений.

Я вижу, у вас уже есть предварительное объявление класса Card ("class Card;").Поэтому тебе действительно нужно #include "Card.h"?Если вы удалите это включение, вы все равно можете обратиться к классу Card из-за предварительного объявления, но это может разрешить циклическую зависимость.

Я обычно не #include .h файлы из других.h файлы на C ++, если только я действительно не должен.Если вы просто ссылаетесь на класс в другом файле (с помощью указателя, ссылки или помещаете его в контейнер, подобный вектору), тогда вы можете просто объявить класс вперед и физически включить файл заголовка из .cpp.только файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...