我遇到了一个小问题。 我得到了Foo和Foo1以及Foo2。 Foo1和Foo2是Foo的遗产。 现在我想将Foo1和Foo2包含在一个cpp文件中以使用它们,但是两个需要在它们的头文件中包含Foo,所以我得到一个类重定义,因为它包括Foo两次。
#include <vector>
#include <initializer_list>
#include "person.h"
#include "booking.h"
class account
{
public:
account ( const std::initializer_list<person> p_PersonList, const std::initializer_list<booking> p_BookingList );
virtual ~account ( );
protected:
double m_balance;
std::vector<person> m_RepresentativesVec;
std::vector<booking> m_BookingsVec;
};
遗产1:
#pragma once
#include "account.h"
class payments_account : public account
{
public:
payments_account ( const std::initializer_list<person> p_PersonList, const std::initializer_list<booking> p_BookingList );
~payments_account ( );
};
2:
#pragma once
#include "account.h"
class savings_account : public account
{
public:
savings_account ( const std::initializer_list<person> p_PersonList, const std::initializer_list<booking> p_BookingList );
~savings_account ( );
};
如果我现在想在management.h中使用2个遗产,我会得到一个重新定义编译错误原因帐户包括两次,但两个都需要在他们的定义中知道帐户...
答案 0 :(得分:1)
我建议您使用内部#pragma once
警卫而不是#define
:
#ifndef _FOO_H_
#define _FOO_H_
/* … */
#endif /* _FOO_H_ */