使用union对类中的glm :: vec4进行别名

时间:2016-09-17 11:32:01

标签: c++ unions glm-math

我想通过执行成员变量别名来增强我的光线跟踪器中的AABB类(将AABB::min别名设为AABB::bounds[0]并将AABB::max别名设为AABB::bounds[1]

这是当前的AABB代码。

class AABB
{
public:
    //methods ignored...

    float4 min;
    float4 max;
};

实现类成员别名。我试图用union来实现它。这使得变量的声明看起来像这样。

union
{
    float4 bounds[2];
    struct {float4 min,max;};
};

但是这给了我以下错误消息:

error: member ‘glm::float4 Incarnate::AABB::<anonymous union>::<anonymous struct>::min’ with constructor not allowed in anonymous aggregate
     struct {float4 min,max;};

在Google上搜索后。我没有找到任何方法来解决这个问题,同时仍然实现我的变量别名的最初目标。 (我发现的所有解决方案都会增加访问变量的复杂性。)

到底有没有?

注意:float4glm::vec4。我使用了GLM兼容性标题,因此我可以像在OpenCL中那样进行编程。

0 个答案:

没有答案