我想通过执行成员变量别名来增强我的光线跟踪器中的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上搜索后。我没有找到任何方法来解决这个问题,同时仍然实现我的变量别名的最初目标。 (我发现的所有解决方案都会增加访问变量的复杂性。)
到底有没有?
注意:float4
为glm::vec4
。我使用了GLM兼容性标题,因此我可以像在OpenCL中那样进行编程。