Я пытаюсь реализовать шаблонный шаблон, содержащий шаблонный метод.не удалось выполнить определение функции/метода
template <class T1, class T2, class T3, class T4>
class ReferenceXML
{
public:
template <class T>
static tinyxml2::XMLElement* addChildAtEnd
(
tinyxml2::XMLElement* parent,
const std::string& name,
const T& value
);
}; // end class definition
template<class T>
template < class T1, class T2, class T3, class T4>
tinyxml2::XMLElement* ReferenceXML<T1,T2,T3,T4>::addChildAtEnd(
tinyxml2::XMLElement* parent,
const std::string& name,
const T& value
)
{
tinyxml2::XMLElement* element = addChildAtEnd(parent, name);
if (element == NULL)
{
return NULL;
}
std::stringstream ss;
ss << value;
tinyxml2::XMLText* value_ptr = element->GetDocument()->NewText(ss.str().c_str());
element->InsertFirstChild(value_ptr);
return element;
}
Ошибка я получаю следующее: 1> C: \ Проекты \ ufm_integration_adtf \ ствол \ testfilters \ xmlexporter \ Sources \ xmlexporter_ref_objdesc \ Sources \ referencexml.h (278): ошибка C2244: ' ReferenceXML :: addChildAtEnd ': не может соответствовать определению функции к существующей декларации
1> определение
1>' tinyxml2 :: XMLElement * ReferenceXML :: addChildAtEnd (tinyxml2 :: XMLElement *, Const станд :: струнной &, const T &) '
1> существующие заявления
1> 'tinyxml2 :: XMLElement * ReferenceXML :: addChildAtEnd (tinyxml2 :: XMLElement *, Const станд :: строка &, сопзЬ Т &, Const станд :: строка &)'
1> 'tinyxml2 :: XMLElement * ReferenceXML :: addChildAtEnd (tinyxml2 :: XMLElement *, Const станд :: строка &, сопзЬ Т &)' 1> «tinyxml2 :: XMLElement * ReferenceXML :: addChildAtEnd (tinyxml2: : XMLElement *, tinyxml2 :: XMLElement *) ' 1>' tinyxml2 :: XMLElement * ReferenceXML :: addChildAtEnd (tinyxml2 :: XMLElement *, const std :: string &) '
Я не понимаю, почему определение не соответствует одному из существующих объявлений, может ли кто-нибудь помочь? Спасибо.
спасибо martin_pr! –