gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:58 25 4
gpt4 key购买 nike

拥有

酒吧.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> {
//...
};

关于c++ - 如何在头文件中声明类模板(由于循环依赖),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com