qdi*_*dii 6 c++ gcc unions c++11
GCC抱怨这个代码,即使我使用-std=c++11
flag 编译,我的gcc版本据称支持Unrestricted union(> 4.6).
union
{
struct
{
float4 I,J,K,T;
};
struct
{
float4 m_lines[4];
};
struct
{
float m16f[16];
};
struct
{
float m44f[4][4];
};
};
Run Code Online (Sandbox Code Playgroud)
请注意,float4有一个非默认构造函数,它接受0个参数.
class float4
{
public:
float4();
....
};
Run Code Online (Sandbox Code Playgroud)
知道我能做什么吗?错误是:
<anonymous union>::<anonymous struct>::I’ with constructor not allowed in anonymous aggregate
Run Code Online (Sandbox Code Playgroud)
这里的问题不是你的类float4
有一个构造函数,使其成为旧 C++03 POD 定义下的非 POD。相反,问题在于您的联合和联合内的结构是匿名的。如果你简单地命名它们,它就会起作用:
union u
{
struct s1
{
float4 I,J,K,T;
};
struct s2
{
float4 m_lines[4];
};
struct s3
{
float m16f[16];
};
struct s4
{
float m44f[4][4];
};
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5759 次 |
最近记录: |