【问题标题】:Defining an array of structs定义结构数组
【发布时间】:2018-03-21 00:14:57
【问题描述】:

我有想要分配给结构数组的数据。

有点像你如何做到这一点:

int foo [5] = { 16, 2, 77, 40, 12071 };

为什么这不适用于这样的事情:

定义结构类型。

struct Creature {
  std::string name;
  int x, y;
};

那么对于数组。

const Creature list[NUM_CREATURES] = {
  name = "Walrus";
  x = 2; y = 6;,
  name = "Sardine";
  x = 3; y = 1;,
  name = "Seahorse";
  x = 4; y = 2;,
  name = "Jellyfish";
  x = 1; y = 10;,
  name = Dolphin";
  x = 8; y = 4;
  }

我将所有这些都放在头文件中。我将此列表定义为一个常量,因为我将使用它们来填充另一个更大的数组,然后按 x 和 y 维度的大小对数组进行排序。

【问题讨论】:

  • 请注意,可以在c 中使用的解决方案可能在c++ 中无效,因此我删除了c 标记。
  • @Slava 我知道语法错误,这就是我问这个问题的原因。感谢您的意见。
  • @NicholasDapprich 你应该正确地提出你的问题。例如:“我怎样才能初始化这样的结构,我试过这种方法但它不起作用”会有非常不同的响应。

标签: c++ arrays struct


【解决方案1】:

您必须在初始化程序中初始化每个结构。

const Creature list[NUM_CREATURES] = {
  { "Walrus", 2, 6 },
  { "Sardine", 3, 1 },
  ...
}

使用统一初始化你不需要做(也不能做)name=/x=/ect

【讨论】:

  • 非常感谢,有道理。不同的类型让我失望。
  • 不是你“不需要”,而是你在 C++ 中“不能使用”。
  • C++20 可能会添加一个基本版本的指定初始化器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多