我有2個結構,其90%的領域相同。我想將這些字段分組在結構中,但我不想使用點運算符來訪問它們。原因是我已經用第一個結構編碼並剛創建第二個結構。我可以在不使用點運算符的情況下訪問結構體內的結構嗎?
前:
typedef struct{
int a;
int b;
int c;
object1 name;
} str1;
typedef struct{
int a;
int b;
int c;
object2 name;
} str2;
現在我將創建第三個結構:
typedef struct{
int a;
int b;
int c;
} str3;
,並會改變str1和ATR2這樣:
typedef struct{
str3 str;
object1 name;
} str1;
typedef struct {
str3 str;
object2 name;
} str2;
最後,我想能夠通過這樣做訪問a,b和c:
str1 myStruct;
myStruct.a;
myStruct.b;
myStruct.c;
,而不是:
myStruct.str.a;
myStruct.str.b;
myStruct.str.c;
有沒有辦法做這樣的事情。這樣做的原因是我想保持數據的完整性,如果發生結構變化,不要重複自己,也不必更改我現有的代碼,也沒有嵌套太深的字段。
已解決:thx爲你所有的答案。的做,這樣我可以使用自動完成最後的辦法也是以下:
struct str11
{
int a;
int b;
int c;
};
typedef struct str22 : public str11
{
QString name;
}hi;
你的代碼對我來說毫無意義。 'str3'不是一個類型,它是一個對象。 'str3 str'這個聲明是沒有意義的。當你聲明結構時,說'struct str3 {...};'而不是'struct {...} str3;' – wilhelmtell 2010-05-10 23:40:25
這就是爲什麼你沒有找到答案,但其他人做的。 – 2010-05-11 00:12:15
來自wikipedia:typedef是C和C++編程語言中的關鍵字。 typedef的目的是爲現有類型分配替代名稱。 從我:我想這畢竟是一種類型,取決於情況。 – 2010-05-11 00:24:44