我有这个头文件:
//region.hpp
#ifndef REGION_HPP
#define REGION_HPP
...
#include "spacepoint.hpp"
class Image;
//class SpacePoint;
class Region
{
Rectangle<SpacePoint> boundaries;
...
它给出了这个错误
error: ‘SpacePoint’ was not declared in this scope
当我取消注释
class SpacePoint
时,我得到以下信息:In instantiation of ‘class Rectangle<SpacePoint>’:
region.hpp:15:27: required from here
rectangle.hpp:19:7: error: ‘Rectangle<T>::start’ has incomplete type
我试图用较小的测试程序重现该问题,但我不能。
我不知道如何解决这个问题。
最佳答案
感谢@Matteo的指导,我解决了这个问题。
使用this答案,我将doxygen配置为显示头文件依赖性。
这样更容易找到循环。
在不需要包含的地方,我删除了包含并添加了一个声明。
在spacepoint.hpp
的情况下,我有效地将#include <image.hpp>
更改为class Image;
之前:
后:
(由于spacepoint.hpp
不再依赖于image.hpp
,因此该图较小)
关于c++ - 无法弄清楚如何解决类型依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19753752/