class redefinition c ++ multiple include

时间:2014-10-01 09:21:41

标签: c++

我遇到了一个小问题。 我得到了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个遗产,我会得到一个重新定义编译错误原因帐户包括两次,但两个都需要在他们的定义中知道帐户...

1 个答案:

答案 0 :(得分:1)

我建议您使用内部#pragma once警卫而不是#define

#ifndef _FOO_H_
#define _FOO_H_
/* … */
#endif /* _FOO_H_ */