C语言编译出现问题:
首先,要分别在两个文件中实现以下两个类
class Object
{
public:
NewType ToType();
};
class NewType : public Object
{
}
l 做法1
//在文件Object.h 中定义
#include "NewType.h"
class Object
{
public:
NewType ToType();
};
//在文件NewType.h 中定义
#include "Object.h"
class NewType : public Object
{
}
将产生错误:
"warning C4182: #include nesting level is 363 deep; possible infinite recursion"
"fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit"
原因是两个文件互相包含,导致包含的层次太深
l 做法2
//在文件Object.h 中定义
#include "NewType.h"
#ifndef _OBJECT_H
#define _OBJECT_H
class Object
{
public:
NewType ToType();
};
#endif
//在文件NewType.h 中定义
#include "Object.h"
#ifndef _NEWTYPE_H
#define _NEWTYPE_H
class NewType : public Object
{
}
#endif
错误依旧
l 做法3
//在文件Object.h 中定义
#ifndef _OBJECT_H
#define _OBJECT_H
#include "NewType.h"
class Object
{
public:
NewType ToType();
};
#endif
//在文件NewType.h 中定义
#include "Object.h"
#ifndef _NEWTYPE_H
#define _NEWTYPE_H
class NewType : public Object
{
}
#endif
产生错误:
"error C2504: 'Object' : base class undefined"