【问题标题】:Defining an array of a custom struct type [duplicate]定义自定义结构类型的数组[重复]
【发布时间】:2021-04-21 22:26:03
【问题描述】:

我试图创建一个我在Creating an array of structs in C++ 中定义的结构的数组,但我得到一个“没有匹配的函数来调用 Simplex::simplex()”错误。出了什么问题?下面是(我认为是)相关代码。错误出现在 Simplex simplices[numberOfSimplices] 行中。

struct Simplex {
public:
    int dimension;
    long* vertices;

    // Constructor definition
    Simplex(int d, long* v) {
        dimension = d;
        vertices = v;
    }
};

void f() {
    // Initializing random seed
    srand(time(NULL));

    long numberOfSimplices = rand() % maxSimplices + 1;

    Simplex simplices[numberOfSimplices];
}

【问题讨论】:

  • 你需要在你的 Simplex 类中定义一个默认的构造函数,所以是一个没有参数的构造函数。 Simplex(){}
  • 或者更好:使用 `std::vector´ 而不是数组,然后您可以添加从任何非默认构造函数创建的元素。
  • C++ 标准不支持该可变长度数组,因此还有另一个理由避免使用它并改用std::vector<Simplex>

标签: c++ arrays struct


【解决方案1】:
Simplex simplices[numberOfSimplices];

将创建numberOfSimplices 数量的Simplex。由于您没有说明如何创建这些对象,因此假设Simplex 对象可以使用Simplex() 默认构造,但Simplex 类中没有可用的默认构造函数,唯一可用的构造函数是Simplex(int, long*)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多