首页 > 代码库 > C++中#include用错的后果

C++中#include用错的后果

今天做一个模块的时候遇到的这个问题。抽象一下,代码如下:

文件结构:

报错:

 

这个报错貌似说的是Box.h中的代码有问题。其实问题的根源在于Cup.h中多余的#include "Box.h"(因为Box.h有#include "Cup.h",所以就构成了循环导致出错!)

解决办法当然就是删掉那条多余的#include指令

感觉C++的编译器基本上报错如果遇到比较复杂的情况的时候,报错信息基本上没有什么参考价值,除了误导就是误导,所以,在写C++的时候一定要小心又小心啊!

 

代码:

Box.h

#ifndef BOX_H#define BOX_H#include "Cup.h"class Box{    public:        Box();        ~Box();};Cup* getCup();void deleteCup(Cup *p);#endif // BOX_H

 

Box.cpp

#include "Box.h"#include <iostream>using namespace std;Box::Box(){    cout << "Box cons" << endl;}Box::~Box(){    cout << "Box des" << endl;}Cup* getCup() {    return new Cup();}void deleteCup(Cup *p) {    delete p;}

Cup.h

#ifndef CUP_H#define CUP_H#include "Box.h"class Cup{    friend Cup* getCup();    public:        ~Cup();    private:        Cup();};#endif // CUP_H

 

Cup.cpp

#include "Cup.h"#include <iostream>using namespace std;Cup::Cup(){    cout << "Cup cons" << endl;}Cup::~Cup(){    cout << "Cup des" << endl;}

 

main.cpp

#include "Box.h"#include "Cup.h"int main() {    Cup *p = getCup();    Box box;    deleteCup(p);}

 

C++中#include用错的后果