TinyXML и получение значений

Я пытаюсь загрузить данные из xml-файла с помощью TinyXML (С++).

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);
}

person Max Frai    schedule 27.05.2010    source источник


Ответы (2)


Причина в том, что вы вызываете версию TiXmlElement::attrib типа int, но присваиваете ей значение по умолчанию типа const std::string, однако функция ожидает значение по умолчанию типа int.

person CMircea    schedule 27.05.2010

attrib<T>(key, defaultValue) вероятно, ожидается, что первый аргумент будет того же типа, что и второй аргумент шаблона.

Другими словами; T в mRootElement->attrib<T>(key, defaultValue) должен быть того же типа, что и defaultValue.

person Viktor Sehr    schedule 27.05.2010