【问题标题】:Declaring array of struct in header without knowing size在不知道大小的情况下在标题中声明结构数组
【发布时间】:2018-04-20 23:05:03
【问题描述】:

我要解决的问题如下:我将一个整数作为输入,这将是我的结构数组的大小。我想在 .h 文件中定义数组,因为大小和数组都必须是全局的。

在 .h 文件中我写 extern NAME_OF_STRUCT my_array[]; 然后在我的 .cpp 文件中我写 NAME_OF_STRUCT my_array[lenght_of_array];初始化它,但它会抛出这个错误:

“文件范围内不允许变长数组声明”

我该怎么办?我还不知道在里面放什么,因为我需要用从文本输入中获取的数据填充结构中的一些值。

【问题讨论】:

  • 听起来像是 std::vector 的工作。
  • 如果 IT 在编译时不知道数组有多大,则编译器无法创建您的数组!如果您还没有了解动态内存分配和指针,那么是时候了。然后,最终,将指针隐藏在 std::vector 之类的东西中作为答案向您展示了 --edit:实际上 c++ 是否允许像现在在 C 中一样的可变长度数组声明?错误消息暗示问题出在文件范围内...

标签: c++ arrays vector global-variables


【解决方案1】:
#include <vector>
std::vector<NAME_OF_STRUCT> my_array;

在 cpp 中:

my_array.resize(length_ofarray);

【讨论】:

  • 我需要把#include 放到.h文件中吗?
  • 很抱歉再次打扰。我按照你的建议做了,但现在我有这两个错误: unknown type name 'node'node.resize(n_nodes);错误:不能在类型 node.resize(n_nodes) 上使用点运算符; node 是向量的名称,n_nodes 是它的长度。
  • 您还有问题吗?我休假了几天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
  • 2018-10-09
相关资源
最近更新 更多