拥有
酒吧.h
template<class T>
class Bar<T> {
//...
}
Foo.h
template<T>
class Bar<T>;
//#include "Bar.h" removed due of circular dependencies, I include it in .cpp file
template<class T>
class Foo {
...
private:
Bar<T> *_bar;
}
如您所见,我需要包含 bar.h,但由于循环依赖的原因,我无法在我的项目中这样做。
所以像往常一样,我只是在 .h 中编写定义,在 .cpp 中编写实现但是这个例子我有一些问题,因为我不知道带有模板的类的语法..
这有什么语法吗?当前示例出现以下编译器错误:
Bar 不是类模板
前向声明语法是
template<T> class Bar;
所以你的代码变成:
Foo.h
template<T> class Bar;
template<class T>
class Foo {
...
private:
Bar<T> *_bar;
};
#include "Foo.inl"
Foo.inl
#include "bar.h"
// Foo implementation ...
酒吧.h
template<class T>
class Bar<T> {
//...
};
我是一名优秀的程序员,十分优秀!