【发布时间】:2013-10-25 21:03:18
【问题描述】:
我有太多代码要发布,但我不断收到一个重复的编译错误,即在整个项目中无法识别类 Orderbk。
最奇怪的是Orderbk 中没有实际的编译错误(这会导致所有其他类无法识别它,这是可以理解的)。
如果我的编译器在Orderbk 中没有发现问题,但每个引用Orderbk 的类都报告它未定义,因此有人可以给我线索吗?
1>------ Build started: Project: FXDcr (Intel C++ 13.0), Configuration: Debug x64 ------
1> Derivative.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1>C:\DXDcr\FXDcr\Stk.h(35): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> FXDcr.cpp
1> FXMsg.cpp
1> Fut.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1>C:\DXDcr\FXDcr\Stk.h(35): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> Index.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> Instr.cpp
1>C:\DXDcr\FXDcr\Stk.h(13): error : not a class or struct name
1> class Stock : public Instr {
1> ^
1>
1>C:\DXDcr\FXDcr\Stk.h(35): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1>C:\DXDcr\FXDcr\Mappings.h(31): error : identifier "Instr" is undefined
1> static unordered_map<string, boost::shared_ptr<Instr> > GetDictOfAllInstrs();
1> ^
1>
1> Main.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> Mappings.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> Order.cpp
1> Stock.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1> SIA.cpp
1>C:\DXDcr\FXDcr\Instr.h(29): error : identifier "Orderbk" is undefined
1> Orderbk getOrderbk();
1> ^
1>
1>C:\DXDcr\FXDcr\Instr.h(33): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
1>C:\DXDcr\FXDcr\Stk.h(35): error : identifier "Orderbk" is undefined
1> Orderbk orderbk;
1> ^
1>
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
编辑我所有的头文件格式:
#ifndef CLASS_H
#define CLASS_H
class CLASS{
};
#endif
【问题讨论】:
-
你是否包含
Orderbk的标题? -
@xorguy 我没有从其他每个 .cpp 文件中忘记它。 Orderbk 一定有问题。
-
可能是您的包含引入了循环依赖关系。使用前向类声明来打破这些。
-
@PavelBeliy 在问题底部看到我的编辑-那些#ifndef 应该消除循环引用?
-
也许您需要链接到图书馆?你有makefile吗?
标签: c++ debugging header compilation compiler-errors