为什么这个模板没有解决?

时间:2013-04-16 08:39:35

标签: c++ templates

我不知道为什么这不起作用

In member function ‘void Test_CB::testCB()’: 
error: no matching function for call to ‘calculateCB(USSM&, USSM&, NL&, double&, CD&)’
candidate is:
template<class T, class V> std::vector<CV> calculateCB(const T&, const T&, const NL&, double, const CD&)

电话就像这样

USSM x1;
USSM x2;
NL x3;
double x4;
CD x5;
CV b = calculateCB<USSM, USM>(x1,x2,x3,x4,x5)[0];

我刚刚描述了这些类型。它们以适当的方式创建或返回。

模板声明为

template <class T, class V>
std::vector<CV> calculateCB(T const & x1,
                            T const & x2,
                            NL const & x3,
                            double x4,
                            CD const & x5);

我还将模板(作为绝望措施)实例化为

template<>
std::vector<CV> calculateCB<USSM,USM>(USSM const & x1,
                                      USSM const & x2,
                                      NL const & x3,
                                      double x4,
                                      CD const & x5);

请注意,第二个模板参数是模板函数中内部使用的变量。

1 个答案:

答案 0 :(得分:1)

我发现了问题,它源于我正在使用的其中一个类(NL)的错误前向声明。实际名称更复杂,由于案例不匹配,我看不出差异。

我认为g ++的错误信息至少应该告诉你哪里没有匹配。