我遇到一个循环包含引用错误,我希望在CardFactory中使用Deck类型的对象,以及在Deck中使用CardFactory类型的对象。关于如何解决这个问题的任何提示?
//CardFactory.h
#ifndef CARDFACTORY_H
#define CARDFACTORY_H
#include "Deck.h"
#include <string>
using std::string;
class CardFactory {
public:
Deck getDeck();
static CardFactory* getFactory() {
static CardFactory singleton;
return &singleton;
}
};
#endif
//Deck.h
#ifndef DECK_H
#define DECK_H
#include <vector>
#include <iostream>
#include "CardFactory.h"
using std::ostream;
class Deck : public std::vector<Card*> {
friend ostream& operator<<(ostream& os, const Deck& dt);
Card* draw();
Deck(CardFactory* cf);
};
#endif
答案 0 :(得分:2)
转发参考(或转发声明)。
在Deck.h
中,您不需要#include "CardFactory.h"
,而只是宣布该课程。
class CardFactory;
这应该有效,因为在Deck
类中,您只使用指向类CardFactory
的指针