C++ 零大小结构的替代方案

C++ 零大小结构的替代方案,c++,arrays,struct,C++,Arrays,Struct,因此,我试图找到一种替代我在这里所做工作的方法,因为在结构中使用零大小的数组是非法的。什么代码可以完成几乎相同的任务 你可以看到我在这里基本上是想为一个有四条边的动画对象创建一个结构 struct Sprite { double x; double y; int textureFront[]; int textureBack[]; int textureRight[]; int textureLeft[]; }; int boxAnimation[7] = {10,5,

因此,我试图找到一种替代我在这里所做工作的方法,因为在结构中使用零大小的数组是非法的。什么代码可以完成几乎相同的任务

你可以看到我在这里基本上是想为一个有四条边的动画对象创建一个结构

struct Sprite
{
  double x;
  double y;
  int textureFront[];
  int textureBack[];
  int textureRight[];
  int textureLeft[];
};

int boxAnimation[7] = {10,5,6,2,76,8,4};

Sprite sprite[8] =
{
  {20.5, 11.5, {10}},
  {18.5, 4.5, boxAnimation},
  {10.0, 4.5, {10}},
  {10.0, 12.5, {10}},
  {3.5, 6.5, {10}},
  {3.5, 20.5, {10}},
  {3.5, 14.5, {10}},
  {14.5, 20.5, {10}},
};

例如,仅在这些字段中分配textureFront。

尝试编写一个构造函数,该构造函数将接受您正在传递的三个参数,然后在内部将其余三个字段设置为null或您想要的任何其他逻辑。

因此,您想要的是一个指针?如果您有特定的大小和类型,只需使用
std::array
std::vector
否则。@kfsone,我不知道你的情况,但是如果我是这个类的用户,我希望不必手动管理每个类的内存。你不会,他使用的是静态赋值,转换为int*textureFront={10};您需要将其标记为常量,但您的建议要好得多,因为他想知道大小。我曾考虑过使用指针,但我不明白如何以相同的方式初始化它。当我将其更改为int*textureFront时;然后我不能像Sprite-Sprite[8]={…}那样初始化它;