使用匿名联合为结构创建空构造函数
creating empty constructor for struct with anonymous union
正在尝试为将联合作为成员变量的结构创建空构造函数。 Union 还有一个 struct 和一个附加变量作为成员变量。
采取了一些方法,但没有一个是成功的。如何为嵌套的匿名结构创建一个空的构造函数?之后如何调用成员变量?
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)。 approaches/reading 我可以做些什么来实现这个目标?
除了你使用 union 的错误方式之外,让我们坚持关于你的嵌套结构的问题。答案很简单:您不能为嵌套结构指定构造函数。因此,即使您修复代码并正确使用嵌套结构,您也无法为该匿名 class/struct 声明构造函数或析构函数,因为构造函数和析构函数名称需要与 class 相匹配姓名。
在您发布的示例中,匿名 class 是本地的。这意味着它没有链接,所以甚至没有创建损坏的名称。
正在尝试为将联合作为成员变量的结构创建空构造函数。 Union 还有一个 struct 和一个附加变量作为成员变量。
采取了一些方法,但没有一个是成功的。如何为嵌套的匿名结构创建一个空的构造函数?之后如何调用成员变量?
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)。 approaches/reading 我可以做些什么来实现这个目标?
除了你使用 union 的错误方式之外,让我们坚持关于你的嵌套结构的问题。答案很简单:您不能为嵌套结构指定构造函数。因此,即使您修复代码并正确使用嵌套结构,您也无法为该匿名 class/struct 声明构造函数或析构函数,因为构造函数和析构函数名称需要与 class 相匹配姓名。 在您发布的示例中,匿名 class 是本地的。这意味着它没有链接,所以甚至没有创建损坏的名称。