2010-09-01 34 views
0

在我的單元測試框架中,對於一些消息(這些簡單的POD結構),我需要一種方法來比較兩個這樣的消息(結構)以實現所有字段的相等。也就是說,如果例如我有一個消息:生成一組方法來檢查消息的內容

struct SExampleMessage 
{ 
    int someField; 
    int someField2; 
    char someField3[10]; 
}; 

我有需要兩個指針SExampleMessage並返回true如果所有字段都在兩個結構相同的方法:

bool compareExampleMessage(SExampleMessage* expectedMsg, 
          SExampleMessage* receivedMsg); 

(的指針當然可以是無效*和鑄造到正確的類型)

我的問題是 - 有沒有辦法避免編寫這個樣板代碼,同時保持typeafe和C + +領域?因此,而不是:

  1. ,簡單地將消息(獲得兩個空隙的指針和該結構的尺寸)

  2. ,其分析的報頭文件中的一些外部腳本的二進制內容進行比較的一種通用的方法結構並生成比較方法

是否有任何元編程巫術使得類似的事情?可能並不是因爲有人會輕易實現C++反射,但它值得一試:)。

回答

1

如果結構是普通的POD(沒有指針內部),那麼你不需要有一個函數,並且做同一類型的var A == var B是好的。

在C++ 0x中,他們甚至放寬了POD規則,以允許與構造函數和其他東西類刪除樣板

http://www2.research.att.com/~bs/C++0xFAQ.html#PODs

這個包袱
相關問題