如何在非模板类中使用模板专门化?

时间:2016-01-07 10:39:33

标签: c++ class templates

我已经搜索了几天,似乎找不到我问题的正确答案。

在我的程序中,我需要有一个读取文件的第一类(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;类。 现在它有效,谢谢大家:)

0 个答案:

没有答案