C++未定义类型错误
亲爱的,我有两个类是电脑和软盘。C++未定义类型错误
当我把
#include "FloppyDisk.h"
#include "Computer.h"
在主,然后编译器生成计算机未申报
的错误,当我
#include "Computer.h"
#include "FloppyDisk.h"
在主
,然后编译器生成软盘未声明的错误。
什么问题? 我检查头文件之间没有循环依赖关系。
这些是供参考的实施文件。
#include "EquipmentAttributes.h"
#include "EquipmentVisitor.h"
#include "Computer.h"
#include "BoostHeader.h"
#include <algorithm>
// =============================================
computer::computer()
: cont()
{
}
// =============================================
void computer::add(equipment* equip)
{
cont.push_back(equip);
}
// =============================================
void computer::remove(equipment* equip)
{
vecIte myIte;
myIte = std::find(cont.begin(), cont.end(), equip);
cont.erase(myIte);
}
// =============================================
void computer::accept(equipmentVisitor* visitor)
{
BOOST_FOREACH(equipment* anEquip, cont)
{
anEquip->accept(visitor);
}
visitor->visitComputer(this);
}
// =============================================
computer::equipVec computer::getCont() const
{
return cont;
}
#include "FloppyDisk.h"
#include "EquipmentAttributes.h"
#include "EquipmentVisitor.h"
// =============================================
floppyDisk::floppyDisk(const int userPrice, const std::string& userName)
: state(new equipmentState(userPrice, userName))
{
}
// =============================================
void floppyDisk::accept(equipmentVisitor* visitor)
{
visitor->visitFloppyDisk(this);
}
// =============================================
floppyDisk::equipPtr floppyDisk::getState() const
{
return state;
}
请帮忙。
谢谢。
是否使用了相同的标题包括在每个文件中后卫,例如:
#ifndef MY_INCLUDE_GUARD
#define MY_INCLUDE_GUARD
// blah blah
#endif
的MY_INCLUDE_GUARD
需要在每头一个唯一的名称。
谢谢解决它。 多么愚蠢的错误。 – peterwkc 2010-07-16 06:39:08
我有检查有头文件
可能没有文件之间的直接循环依赖之间没有循环 依赖。但是,如果其中一个EquipmentAttributes.h或EquipmentVisitor.h包含computer.h或floppy.h,则会创建一个涉及三个文件的循环依存关系。在这种情况下,你会得到未定义类型的编译器错误。
谢谢。问题解决了。 – peterwkc 2010-07-16 06:39:36
你也可以发布编译器输出吗? – Nubsis 2010-07-15 10:57:34
我们能否看到头文件?这可能是问题所在。 – 2010-07-15 10:59:15