如何在头文件中声明类模板(由于循环依赖)

msmn

Bar.h

template<class T>
class Bar<T> {
//...
}

oo

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 is not a class template

贾罗德42

正向声明语法为

template<T> class Bar;

因此,您的代码变为:

oo

template<T> class Bar;

template<class T>
class Foo {
...
private:
    Bar<T> *_bar;
};

#include "Foo.inl"

富尔

#include "bar.h"

// Foo implementation ...

Bar.h

template<class T>
class Bar<T> {
//...
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何打破定义嵌套模板类的头文件的循环依赖?

如何在类型依赖于派生类的基础模板类中声明成员?

如何在同一主文件中向前声明模板类之类的模板类

如何在层次结构头文件中声明嵌套类型?

如何在头文件中声明C数组?

模板类中的循环依赖

头文件中的类声明重复

在类的头文件中声明列表

如何在其他类头文件中包含类头文件

如何在源文件中定义类并在头文件中声明它(而不必使用`class :: method`语法定义类方法)?

头文件中模板类实现的模板成员

如何在一个以上的源文件中包括在头文件中声明的struct变量?

如何在头文件中声明结构并在.c文件中定义

clang-如何在头文件中声明静态const int?

如何在头文件中声明具有未知参数数据类型的函数?

如何在另一个类头文件中定义类构造函数?

如何在头文件中正确声明全局变量?

在C ++中,当在源文件中定义数据结构时,如何在头文件中声明数据结构?

如何在库中组织头文件

如何在 HTML 中包含头文件

C头文件之间的循环依赖

如何使用在我的头文件中声明的枚举?

如何使用在多个头文件中声明的函数

在头文件中声明extern结构模板,以在c文件中全局使用

如何将模板类与其朋友模板类分离为不同的头文件?

C++ 头文件类声明

如何将模板化服务传递到类中而不在该类头中包含该服务的头文件?

单个头文件中的命名空间和类及其方法定义如何在多个头文件或cpp文件中使用呢?

C ++在另一个类头文件中声明一个类