TinyXML и извлечение значений - PullRequest
0 голосов
/ 28 мая 2010

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

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

rootElem - корневой элемент загруженного xml-файла. Я хочу загрузить высота значение из него (целое число). Но у меня есть функция-обертка для этого материала:

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 ]

1 голос
/ 28 мая 2010

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

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

1 голос
/ 28 мая 2010

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

...