我试图创建自己的结构。所以我写了这段代码。
struct node
{
int val, id;
node(int init_val, int init_id)
{
val = init_val;
id = init_id;
}
};
node t[100];
int main()
{
...
}
我试图编译我的程序。但是我收到了一个错误:
error: no matching function for call to 'node::node()'
note: candidates are:
note: node::node(int, int)
note: candidate expects 2 arguments, 0 provided
note: node::node(const node&)
note: candidate expects 1 argument, 0 provided
答案 0 :(得分:13)
node t[100];
将尝试通过调用node
的默认构造函数来初始化数组。您可以提供默认构造函数
node()
{
val = 0;
id = 0;
}
或者,更确切地说,明确地初始化所有100个元素
node t[100] = {{0,0}, {2,5}, ...}; // repeat for 100 elements
或者,因为您使用的是C ++,所以请改用std::vector
,在运行时附加(使用push_back
)
std::vector<node> t;
答案 1 :(得分:10)
这将解决您的错误。
struct node
{
int val, id;
node(){};
node(int init_val, int init_id)
{
val = init_val;
id = init_id;
}
};
你应该声明默认构造函数。