假设有以下的文件:
element.h
class element_list;
class element{
element_list subelements;
//......
}
element.cpp
#include "element.h"
#include "element_list.h"
//.....
element_list.h
#include "element.h"
class element_list{
//...
std::list<element> subs;
}
当必须存在class element与class element_list时,且这两个类互相包含以对方为类型的成员时,用以上的编程方法会造成C2079问题(使用了未定义的class “element_list” , 在文件element.h中)
那么,该怎么避免这样的问题?
(当然我不想用指针,除非指针是唯一解决办法)
(我想过Impl,但是如果其中一个类的返回值是未定义的类呢?)
(我也想过将element_list改为template,并在模板中传入类型element,但是如果这个模板还需要一个参数,且此参数必须继承于element呢?)