2011-04-20 74 views
0

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

回答

1

如果您的“源代码”是XML,XSLT看起来像是一个明显的选择。

+0

XSLT可能是最通用的方法,但具有非常复杂的语法。谷歌缓冲区定义的简单性非常吸引人。 – Boris 2011-04-21 08:10:50

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