尝试为具有联合作为成员变量的结构创建空构造函数。 Union还具有一个结构和一个附加变量作为成员变量。
采取了几种方法,但没有成功。如何为嵌套的匿名结构创建一个空的构造函数?之后如何调用成员变量?
typedef struct test_struct
{
int a;
union {
int b;
struct {
int c;
};
};
} test_struct;
以下将无法编译
test_struct() : a(10), b(20), c(30) {
}
下面将b和c都设置为30
test_struct() : a(10), b(20) {
c = 30;
}
这是打印功能
int main(void)
{
test_struct *ts = new test_struct();
printf("%i\n%i\n%i\n", ts->a, ts->b, ts->c);
return 0;
}
我试图创建一个空的构造函数,该构造函数将使用我的printf()打印10 20 30。
编辑:我收到了有关如何无法以这种方式初始化联合的评论。但是,我收到的头文件(我根本无法更改)具有在这种嵌套结构中定义的结构。我不知道初始化如何进行,但是我的代码必须打印出所有成员变量的值。 (以下示例代码为a,b和c)。我可以采取任何方法/阅读来实现这一目标?
答案 0 :(得分:0)
除了错误地使用并集之外,让我们继续关注关于嵌套结构的问题。答案很简单:您不能为嵌套结构指定构造函数。因此,即使您修复了代码并正确使用了嵌套结构,也将无法为该匿名类/结构声明构造函数或析构函数,因为构造函数和析构函数名称必须与类名匹配。 在您发布的示例中,匿名类是本地的。这意味着它没有链接,因此甚至不会创建名称混乱的名称。