Ich versuche, Vorlagen zu verwenden, konnte aber nicht verstehen, was falsch ist mit unten Code.Vorlage Klassenspezialisierung: Vorlage-ID stimmt nicht mit Vorlage Deklaration
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
ist eine Unterklasse einer abstrakten Klasse TNLP
. Ipopt_solve
wird mit einem Verweis auf nlp
Klasse initialisiert.
von main.cpp
nlp problem(&model);
solve<IPOPT> solution(&problem);
Ich erhalte den Fehler wie unten gezeigt.
Fehler: template-id 'lösen <>' für 'lösen < 1> :: lösen (nlp *)' passt nicht jede Template-Deklaration lösen :: lösen (nlp * Problem): m_ipopt (Problem)