我试图转发声明一个模板类,然后使用该类在其他类中声明成员数据。代码如下:
\n\nusing 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}\nRun Code Online (Sandbox Code Playgroud)\n\n我得到编译错误:
\n\nerror: \xe2\x80\x98T\xe2\x80\x99 was not declared in this scope\n B<T> b;\nRun Code Online (Sandbox Code Playgroud)\n\n有人可以让我知道我做错了什么以及如何实现我的目标吗?(我注意到关于模板类的帖子,但没有一个回答我的问题。)
\n\n预先非常感谢!
\n这:
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类删除也应该被模板化。