TinyXML和获取值

时间:2010-05-27 21:53:27

标签: c++ templates tinyxml

我正在尝试使用TinyXML(c ++)从xml-file加载数据。

int height = rootElem->attrib<int>("height", 480);

rootElem 是已加载的xml文件的根元素。我想从中加载 height 值(整数)。但我有这个东西的包装函数:

template<typename T>
T getValue(const string &key, const string &defaultValue = "")
{
    return mRootElement->attrib<T>(key, defaultValue);
}

它适用于字符串:

std::string temp = getValue<std::string>("width");

在抓取期间失败:

int temp = getValue<int>("width");


>no matching function for call to ‘TiXmlElement::attrib(const std::string&, const std::string&)’

UPD :新版代码:

template<typename T>
T getValue(const string &key, const T &defaultValue = T())
{
    return mRootElement->attrib<T>(key, defaultValue);
}

2 个答案:

答案 0 :(得分:1)

原因是你正在调用TiXmlElement :: attrib的int版本,但你给它一个const std :: string&amp;类型的defualtValue,但是,该函数需要一个int类型的defaultValue。

答案 1 :(得分:1)

attrib<T>(key, defaultValue)可能期望它的第一个参数与它的第二个模板参数类型相同。

换句话说; T中的mRootElement->attrib<T>(key, defaultValue)必须与defaultValue的类型相同。