gpt4 book ai didi

c++ - 如何在类初始值设定项中设置 union ?

转载 作者:可可西里 更新时间:2023-11-01 18:28:47 28 4
gpt4 key购买 nike

给定一个类(如下所示)和给定的 union ,如何将 union 初始化为正确的值?

这里尝试的是使用两种或多种不同的类型作为类的核心数据类型之一。假设类型是提前已知的,而不是使用 void*,将构造将要使用的类型的 union 。问题是如何在实例化类时初始化正确的 union 成员。这些类型不是多态的,因此通常的继承模型似乎并不合适。一些天真的尝试初始化正确的 union 成员没有结果。

union Union {
int n;
char *sz;
};

class Class {
public:
Class( int n ): d( 1.0 ), u( n ) {}
Class( char *sz ): d( 2.0 ), u( sz ) {}
....
double d;
Union u;
};

在搜索解决方案后,答案变得显而易见,并且可能是这个答案库的一个很好的解决方案,因此我将其包含在下面。

最佳答案

对于任何没有构造函数的类型,事实证明您可以在 union 中对其进行初始化。这answer on union initializers给出解决方案的提示:

union Union {
int n;
char *sz;
Union( int n ): n( n ) {}
Union( char *sz ): sz( sz ) {}
};

现在它按预期工作。很明显,如果您知道要寻找什么。

编辑:您还可以在类构造函数中记下 union 中使用的类型,通常使用 int 或类似类型。

关于c++ - 如何在类初始值设定项中设置 union ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com