我正在努力并试图理解为什么以下代码不起作用。
我有3个类定义为:
class VertexType
{
public:
VertexType(void) { };
virtual ~VertexType() = 0;
};
class PositionColorVertex
: public VertexType
{
public:
PositionColorVertex(XMFLOAT3 _position, XMFLOAT4 _color)
:Position(_position), Color(_color)
{};
~PositionColorVertex() {};
static const UINT size = 28;
XMFLOAT3 Position;
XMFLOAT4 Color;
};
class PositionVertex
: public VertexType
{
public:
PositionVertex(XMFLOAT3 _position)
:Position(_position)
{};
~PositionVertex() {};
static const UINT size = 12;
XMFLOAT3 Position;
};
数组初始化适用于:
PositionVertex vertices[] = { XMFLOAT3(0,0,0) };
但是当我尝试初始化时:
PositionColorVertex vertices[] = {
{ XMFLOAT3(0,0,0), XMFLOAT4(0,0,0,1) } };
我得到一个错误 C2552 非聚合不能用初始化列表初始化。
为什么 PositionVertex 有效而 PositionColorVertex 无效?