C++结构体构造函数

10

我尝试创建自己的结构。因此,我编写了这段代码。

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

4
node t[100]; 会默认构造每个元素,但是 node 没有默认构造函数。 - David G
2个回答

16
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;

11

这将修复您的错误。

struct node
{
int val, id;
node(){};

node(int init_val, int init_id)
{
    val = init_val;
    id = init_id;
}
};

您应该声明默认构造函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接