【发布时间】:2014-11-27 11:07:14
【问题描述】:
我正在尝试实现一个包含模板化方法的模板化类。
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:\projects\ufm_integration_adtf\trunk\testfilters\xmlexporter\sources\xmlexporter_ref_objdesc\sources\referencexml.h(278):错误 C2244:'ReferenceXML::addChildAtEnd':无法将函数定义与现有声明匹配
1> 定义
1> 'tinyxml2::XMLElement *ReferenceXML::addChildAtEnd(tinyxml2::XMLElement *,const std::string &,const T &)'
1> 现有声明
1> 'tinyxml2::XMLElement *ReferenceXML::addChildAtEnd(tinyxml2::XMLElement *,const std::string &,const T &,const std::string &)'
1> 'tinyxml2::XMLElement *ReferenceXML::addChildAtEnd(tinyxml2::XMLElement *,const std::string &,const T &)' 1> 'tinyxml2::XMLElement *ReferenceXML::addChildAtEnd(tinyxml2::XMLElement *,tinyxml2::XMLElement *)' 1> 'tinyxml2::XMLElement *ReferenceXML::addChildAtEnd(tinyxml2::XMLElement *,const std::string &)'
我不明白为什么定义与现有声明之一不匹配,有人可以帮忙吗?谢谢。
【问题讨论】: