value为自定义类,申明map时提示缺乏默认构造函数
错误代码:
#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
class node {
public:
int x;
node(int x) {
this->x = x;
}
};
int main() {
map<int, node> my;
node s(0);
my.insert(pair<int, node>(1, s));
cout << my[1].x;
}
报错提示没有合适的默认构造函数
解决方法:在类构造中添加一个空参空描述的构造函数:
class node {
public:
int x;
node() {}
node(int x) {
this->x = x;
}
};
因为map要引用此无参默认构造函数,但由于我们已经申明了构造函数,所以编译器无法自己生成一个默认构造函数,此时我们加上一个无参无描述的构造函数来给map调用就可以了。
0