Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;匿名联合-在构造函数中实例化常量数组_C++_Arrays_Struct_Heap_Instantiation - Fatal编程技术网

C++ C++;匿名联合-在构造函数中实例化常量数组

C++ C++;匿名联合-在构造函数中实例化常量数组,c++,arrays,struct,heap,instantiation,C++,Arrays,Struct,Heap,Instantiation,我在一项任务中为这个问题苦苦挣扎了一段时间,不知道是否有人愿意帮忙 我试图了解C++中的匿名联盟并将它们用于四元数。 我很难弄清楚在构造函数中声明数组常量变量的语法 这里是anon结构 union { static const float* arr = new float[4]; struct { const float _x; const float _y; const float _z;

我在一项任务中为这个问题苦苦挣扎了一段时间,不知道是否有人愿意帮忙

我试图了解C++中的匿名联盟并将它们用于四元数。 我很难弄清楚在构造函数中声明数组常量变量的语法

这里是anon结构

union {
        static const float* arr = new float[4];
        struct {
            const float _x;
            const float _y;
            const float _z;
            const float _w;
        };
    };
我已经尝试了很多组合,但都没有成功

Quaternion::Quaternion(const float x1, const float y1, const float z1, const float w1) :
        ?, ?, ?, ? {}

谢谢

arr
应该是数组,而不是指针。即使如此,在两个联合成员之间切换(例如写入数组和从x读取)仍然是未定义的行为,尽管它在许多编译器上都可以工作。感谢您的回复。要使arr成为数组,这是否意味着在堆栈上声明它。是的,这就是声明它的方式(虽然它并不意味着在堆栈上-它是一个成员,并且与union具有相同的存储)。那么这将取决于我如何实例化四元数类?一个要求是四元数在堆栈上实例化,而私有浮点数在堆上。我很高兴只使用匿名联盟之外的数组,我想这很奇怪。
arr
应该是数组,而不是指针。即使如此,在两个联合成员之间切换(例如写入数组和从x读取)仍然是未定义的行为,尽管它在许多编译器上都可以工作。感谢您的回复。要使arr成为数组,这是否意味着在堆栈上声明它。是的,这就是声明它的方式(虽然它并不意味着在堆栈上-它是一个成员,并且与union具有相同的存储)。那么这将取决于我如何实例化四元数类?一个要求是四元数在堆栈上实例化,而私有浮点数在堆上。我很高兴只使用匿名联盟之外的数组,我想我只是好奇而已。