我有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