2011-04-20 71 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; 
}