gpt4 book ai didi

c++ - 为什么我得到 "Candidate constructor not viable"?

转载 作者:行者123 更新时间:2023-11-30 03:19:35 26 4
gpt4 key购买 nike

#include <stdio.h>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

struct Node1 {
unsigned int vertex;
unsigned int representative;
Node1(unsigned int Vert, unsigned int Rep) : vertex(Vert), representative(Rep) {}
};

class Graph{
vector<Node1> nodes;
public:

void findComponents() {
nodes.emplace_back(1, 1);
nodes.resize(1);
// nodes.resize(newSize);
}
};

int main(){
Graph g;
g.findComponents();
}

我遇到了大量奇怪的构建错误,主要包括“候选构造函数不可行”和“在成员函数 'std::__1::vector >::resize' 的实例化中请求她”

最佳答案

要使用 vector::resize() 的以下重载您在代码中使用的 T 必须满足 MoveInsertable 和 DefaultInsertable 的要求。

void resize( size_type count );

DefaultInsertable 意味着该类型的实例可以就地默认构造

所以您需要的是 Node1 的默认构造函数。为此,您可以这样做:

Node1() = default;

或者在现有构造函数中为 VertRep 指定默认值,如下所示:

Node1(unsigned int Vert = 0, unsigned int Rep = 0) : vertex(Vert), representative(Rep) {}

关于c++ - 为什么我得到 "Candidate constructor not viable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53583588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com