【问题标题】:How do I create an array with dynamic dimension sizes in C++?如何在 C++ 中创建具有动态维度大小的数组?
【发布时间】:2012-11-27 07:10:06
【问题描述】:

我希望创建一个数组(或向量?)来表示一些文件。

基本上,我将拥有可变数量的输入文件。每个文件的每一行都可以被视为一个自定义对象(我称它们为“符号”)。每个文件的行数不定。

所以我想进行这种表示:

数组[x][y]

x 指的是文件,y 指的是该文件中的行。

我在 stackoverflow 上看到了一些主题,这些主题提出了一些类似的建议

symbol **snapShots = new symbol*[usableFiles];
for(int i = 0; i < usableFiles; ++i) {
   snapShots[i] = new symbol[longestFile];
}

这在构建时给了我一个奇怪的错误消息:

Undefined symbols for architecture x86_64:
   "symbol::symbol()", referenced from:
       _main in MarketDataGenerator.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Info: Parallel threads used: 3

任何想法我会怎么做?还是在读回以进行进一步处理之前将信息暂时存储在文件中更好?

【问题讨论】:

  • 该错误可能意味着您尚未定义默认构造函数,或者未链接到定义。无论如何,使用std::vector,而不是双指针。
  • 会包含未定义的析构函数吗?我很确定我的构造函数没问题。
  • 它抱怨错误中的构造函数。它需要一个链接器可以找到的主体。
  • D'oh - 是的,缺少默认构造函数。

标签: c++ arrays vector multidimensional-array dynamic-allocation


【解决方案1】:

您是否考虑过使用std::vector&lt;symbol&gt;std::vector&lt;std::vector&lt;symbol&gt; &gt;?您的链接器试图告诉您的是,您已经为您的类 symbol 声明了一个默认构造函数,但没有定义它(至少在您链接的文件中没有)。

【讨论】:

  • 是的 - 缺少默认构造函数。不知道我怎么忽略了那个!无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 2013-01-17
  • 2020-05-20
  • 2018-05-19
相关资源
最近更新 更多