2013-07-17 27 views
0

我需要爲我當前的代碼添加一個表格格式。下面的代碼版本稍微簡單一些。對C++表格格式的建議

class A { 
    public: 
    A():x(0) { 
    } int getValue() { 
    return x; 
    } 
    private: 
    int x; 
}; 

class B { 
    public: 
    B():y(0) { 
    } int getValue() { 
    return y; 
    } 
    private: 
    int y; 
}; 

class C { 
    public: 
    C():z(0) { 
    } int getValue() { 
    return z; 
    } 
    private: 
    int z; 
}; 

class D { 
    public: 
    D(A x, B y, C z) { 
    a = x; 
    b = y; 
    c = z; 
    } A getA() { 
    return a; 
    } 
    B getB() { 
    return b; 
    } 
    C getC() { 
    return c; 
    } 
    private: 
    A a; 
    B b; 
    C c; 
}; 

typedef enum { 
    TABLE_A = 0, 
    TABLE_B, 
    TABLE_C, 
    TABLE_D, 
    TABLE_MAX 
} table_index; 

typedef struct tableInfo_tag { 
    table_index id, D d; 
} tableInfo; 

tableInfo gtable[table_index::TABLE_MAX] = { 
    {TABLE_A, {1, 2, 3}}, 
    {TABLE_A, {4, 5, 6}}, 
    {TABLE_A, {7, 8, 9}} 
} 

但我不知道我不能給D類表中的值,因爲它接受構造函數。我需要這種表格格式,因爲我可以給出大範圍的值集合並根據特定的條件獲取集合......我不是C++專家,所以關於如何進一步進行的任何輸入或任何其他想法/輸入真的是非常有幫助的

+0

類型(!)'table_index'定義在哪裏? 'typedef tableInfo_tag {...} tableInfo;'也不會編譯。請顯示真實的代碼。順便說一句:我認爲你的問題可以通過使用普通結構來解決,因爲即使在舊的C++標準下,它們也可以從列表{{}}中輕鬆地初始化。 –

+0

感謝您對comments.just的糾正。不幸的是,我不能顯示原始代碼(儘管我已經寫了這部分代碼),因爲它是大型項目代碼的一部分。我只是想將表格版本添加到現有的C++代碼中,所以班級是首選。 D類已經定義..所以我需要看到,如何最好地添加一個D值表... – pdk

+0

我必須補充說你的代碼很難閱讀。您應該給變量和類型賦予有意義的名稱,併爲您的代碼設置格式以供人們閱讀,而不僅僅是編譯器。 – idoby

回答

0
typedef struct tableInfo_tag { 
    table_index id; 
    D d; 
} tableInfo; 

tableInfo gtable[TABLE_MAX] = { 
    {TABLE_A, D(A(),B(),C())} 
}; 

很好玩的寫作又一些C;)

typedef struct tableInfo_tag { 
    table_index id; 
    int d_len; 
    D d[8]; 
} tableInfo; 

tableInfo gtable[TABLE_MAX] = { 
    {TABLE_A, 2, {D(A(),B(),C()),D()}} 
}; 

這裏^^^ d是一個數組,但它應該是靜態分配的 - 這就是爲什麼要指定它的大小... D的可用大小未知,我添加了d_len以解決此問題...

+0

現在好了還有一個問題。當我試圖在我的代碼上實現這一點時,我意識到,我爲每個表都有一個類型爲D的向量。矢量大小可以變化。 typedef struct tableInfo_tag { table_index id; int num_instances; D d; } tableInfo; (A(),B(),C()),{TABLE_B,2,D(A(),B(),C()){TABLE_B, ,D(A(),B(),C())} }; – pdk

+0

有關於此的任何想法? – pdk

+0

基本上我想指定D的實例的數量在表中是可變的,並讀取它們並創建一個向量。 – pdk