如何在C++中转发声明模板类并将其用作成员数据?

leo*_*leo 2 c++

我试图转发声明一个模板类,然后使用该类在其他类中声明成员数据。代码如下:

\n\n
using namespace std;\n\ntemplate<class T>\nclass B;\n\nclass A{\n   B<T> b;\n};\n\ntemplate<class T>\nclass B{\n    T x;\n};\n\nint main(){\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到编译错误:

\n\n
error: \xe2\x80\x98T\xe2\x80\x99 was not declared in this scope\n     B<T> b;\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人可以让我知道我做错了什么以及如何实现我的目标吗?(我注意到关于模板类的帖子,但没有一个回答我的问题。)

\n\n

预先非常感谢!

\n

Dav*_*aim 5

这:

class A{
   B<T> b;
};
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

template <class T>
class A{
    B<T> b;
};
Run Code Online (Sandbox Code Playgroud)

通过添加B<T>into A,您基本上也变成A了模板类以及模板类型T,因此A类删除也应该被模板化。