Шаблон автоматически сгенерированного кода, а не тип

Я пытаюсь создать класс, который может читать любой тип сериализованного кода XSD / XML. Поскольку у меня есть около 1000 различных определений данных, я хотел бы сделать XmlLoader класс родовой

Однако в автоматически сгенерированном сериализованном коде мне трудно понять способ получения указателя на данные в памяти.

Код:

template <class XmlType>
class XmlLoader {
public:

XmlLoader(const std::string &filename, const std::string &xsd) :
filename(filename),
xsd(xsd) {
try {
this->initialize();
} catch (const xml_schema::exception &e) {
ERROR("Unable to parse [%s], aborting\n", filename.c_str());
} catch (const std::invalid_argument &e) {
ERROR("Unable to locate [%s], aborting\n",
std::string(Component::getJarssXSDDirectory() + xsd).c_str());
}
}

std::auto_ptr<XmlType> xmlInstance;

private:

void initialize() {

std::string schema = Component::getJarssXSDDirectory() + xsd;
if (!Application::validatePath(schema)) {
throw std::invalid_argument("XSD cannot be found");
}

xml_schema::properties props;
props.no_namespace_schema_location(schema);
xmlInstance = std::auto_ptr<XmlType > (XmlType_(filename, 0, props));
}

std::string filename;
std::string xsd;
};

Проблема заключается в этой строке: xmlInstance = std::auto_ptr<XmlType > (XmlType_(filename, 0, props));

Если бы я делал это вручную, это выглядело бы примерно так:

xmlInstance = std::auto_ptr<XmlType>(XmlType_(filename, 0, props));

Обратите внимание на _ для функции на XmlType.

Когда я пытаюсь шаблонизировать это, компилятор заявляет, что XmlType_ не является типом и не был включен в шаблон аргумента.

поскольку XmlType_ это не тип, это функция, сгенерированная сериализатором XSD, как я могу передать это через шаблон? Я никогда не сталкивался с чем-либо подобным.

Есть идеи?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …