我正在尝试使用模板,但无法理解以下代码有什么问题。 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 'solve' for 'solve::solve(nlp*)' 与任何模板声明都不匹配 解决::解决(nlp*问题):m_ipopt(问题) 最佳答案 您应该删除 template<> ,即// template <>solve<IPOPT>::solve(nlp* problem): m_ipopt(problem){}template<> 用于模板特化(用于模板);但您只是定义了一个非模板成员函数(类模板特化)。 (这就是编译器提示找不到模板声明的原因。)关于c++ - 模板类特化 : template-id does not match any template declaration,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44898822/ 10-13 08:10