나는이 두 클래스가 서로 필요하고 같은 클래스에서 상속 받았다. Wehn 나는 Seller.h 컴파일, 괜찮아요 컴파일하지만 내가 Buyer.h 컴파일하면 Seller.h에서 오류가 발생합니다.클래스는 선언되지 않았지만 포함 되었습니까?
Seller.h:14:16: error: âBuyerâ has not been declared
void addBuyer(Buyer*);
^
Seller.h:15:14: error: âBuyerâ was not declared in this scope
std::vector<Buyer*> getBuyers() const;
Seller.h:20:17: error: âOrderâ has not been declared
void fillOrder(Order*);
^
그들은 #include하는되지만 여전히 범위를 벗어나 말한다 : 내가 Buyer.h를 컴파일 할 때
그래서 나는 다음과 같은 오류를 얻을. Buyer.h
#ifndef BUYER_H
#define BUYER_H
#include <string>
#include "Entity.h"
#include <queue>
#include "Order.h"
#include "Seller.h"
class Buyer : public virtual Entity
{
public:
Buyer(const std::string &, const std::string &, double =0.0);
virtual ~Buyer(){}
void addSeller(Seller *);
std::queue <Seller *> getSellers() const;
void addOrder(Order *);
std::queue <Order*> getOrders() const;
virtual void list() const override;
virtual void step() override;
private:
std::queue <Order*> orders;
std::queue <Seller*> sellers;
};
#endif
순환 포함 종속성이 있습니다. 그건 안돼. http://stackoverflow.com/questions/625799/resolve-circular-dependencies-in-c – juanchopanza
을 참조하십시오. 그러나 Order 클래스는 어떻습니까? 그것은 실제로 주기적이 아니며 오류도 발생합니다. – user3582405