Pep*_*nds 9 c++ constructor struct
我试图创建自己的结构.所以我写了这段代码.
struct node
{
int val, id;
node(int init_val, int init_id)
{
val = init_val;
id = init_id;
}
};
node t[100];
int main()
{
...
}
Run Code Online (Sandbox Code Playgroud)
我试着编译我的程序.但是我收到了一个错误:
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
Run Code Online (Sandbox Code Playgroud)
sim*_*onc 15
node t[100];
Run Code Online (Sandbox Code Playgroud)
将尝试通过调用默认构造函数来初始化数组node.您可以提供默认构造函数
node()
{
val = 0;
id = 0;
}
Run Code Online (Sandbox Code Playgroud)
或者,相当冗长,明确地初始化所有100个元素
node t[100] = {{0,0}, {2,5}, ...}; // repeat for 100 elements
Run Code Online (Sandbox Code Playgroud)
或者,因为您正在使用C++,std::vector所以请push_back在运行时使用C++ 追加(使用)
std::vector<node> t;
Run Code Online (Sandbox Code Playgroud)
iDe*_*_gh 11
这将解决您的错误.
struct node
{
int val, id;
node(){};
node(int init_val, int init_id)
{
val = init_val;
id = init_id;
}
};
Run Code Online (Sandbox Code Playgroud)
您应该声明默认构造函数.