我想使用模板,但无法理解下面的代码有什么问题。模板类专业化:模板ID不匹配任何模板声明
solve.h
#include "nlp.h"
#include "Ipopt_solve.h"
enum algo_type {IPOPT =1, SQP};
template<int ALG>
class solve
{
public:
solve()
{
}
};
template<>
class solve<IPOPT>
{
public:
solve(nlp*);
private:
Ipopt_solve m_ipopt;
};
solve.cpp
template<>
solve<IPOPT>::solve(nlp* problem): m_ipopt(problem)
{
}
Ipopt_solve
是子类的抽象类TNLP
的。 Ipopt_solve
初始化为参考nlp
类。
从main.cpp中
nlp problem(&model);
solve<IPOPT> solution(&problem);
我得到的错误如下所示。
错误:模板id '解决<>' 为 '解决< 1> ::解决(NLP *)' 不匹配任何模板声明 解决::解决(NLP *问题):m_ipopt(问题)