我已经搜索了几天,似乎找不到我问题的正确答案。
在我的程序中,我需要有一个读取文件的第一类(D)并实例化一些基本对象,这些对象将用于创建其他对象。一旦它们被创建,我就会用一组对象PC来调用一个解析函数,这些对象是类的必然或者是P类的子类。
为此,我实现了一个PC集合,它只是一个存储PC对象的矢量封装。
在D.h
class D {
/*...*/
template<typename PC>
parse(vector<string> cmdline, V<PC> vpcs);
}
在D.cpp
template<typename PC>
parse(vector<string> cmdline, V<PC> vpcs) {
/* parse options */
/* check with a functor if PC is really of class (child of) P */
vpcs.push_back( PC(args) );
}
在V.h中
template<typename PC>
class V {
/*...*/
vector<PC> vpcs;
}
在main.cpp
中{
D des;
vector<string> cmdline;
V<P*> vps;
des.parse(cmdline, vps);
}
为什么我要这样做?因为我正在编写一个库,我们必须让未来的开发人员为专门的程序创建自己的P子项,所以我想做一些非常通用的东西(因此:模板:))。 我已经用P级实现并测试了我的功能,完全正常工作,现在我想改进它。但是我没有设法编译我的代码,也没有理解我做错了什么。
(另外,对于记录:第一次使用模板,所以我已经阅读了很多文档,但应用程序总是有点困难!)
感谢您将来的答案,如果我可以添加更多详细信息,请告诉我们。
编辑:好的,所以发布的帖子为&#34;重复&#34; (我在研究过程中从未读过,也许不是我输入的正确关键词?)帮助了我一件事,但实际上根本不是这个问题。我有另一个我设法解决的问题。 事实上,我打算有一个指针集合,所以我决定只传递类,而只是传递给我的模板&#34;向量&#34;类。 现在它有效,谢谢大家:)