C ++消息类生成

时间:2011-04-20 15:32:29

标签: c++ code-generation

您好我需要一个库来自某些temaplate(例如XML)在C ++中自动生成消息类。与谷歌缓冲区类似的东西。但是谷歌缓冲区不支持继承和“免费”字段。我不需要用于序列化它只是从模板部分自动生成,这是必须的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您的“源”是XML格式,那么XSLT似乎是显而易见的选择。

答案 1 :(得分:0)

看起来您至少有两个问题:从XML读取并在Fly上创建实例。正如其他人所说,使用库来解析XML。在网络上搜索"Factory design pattern c++"

如果存在公共基类,则工厂将返回后代对象的实例(在动态内存中分配)。否则工厂将是返回不同对象的函数集合。

工厂实现的一种形式是让方法接收文本字符串(要创建的类的名称)并返回实例指针,如果方法无法创建类,则返回NULL。像这样:

class Animal;
class Cat: public Animal;
class Dog: public Animal;
class Elephant: public Animal;

Animal * Create_Cat(const std::string& animal_name);
Animal * Create_Dog(const std::string& animal_name);
Animal * Create_Elephant(const std::string& animal_name);

Animal * Animal_Factory(const std::string& animal_name)
{
    Animal * p_animal = NULL;
    do
    {
        p_animal = Create_Cat(animal_name);
        if (p_animal)
        {
            break;
        }
        p_animal = Create_Dog(animal_name);
        if (p_animal)
        {
            break;
        }
        p_animal = Create_Elephant(animal_name);
        if (p_animal)
        {
            break;
        }
    } while (false);
    return p_animal;
}