error: no matching function for call to 'Node::Node()' - second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
error: no matching function for call to 'Node::Node()' - second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
我定义了这样的结构:
struct Node
{
int32_t a;
int32_t b;
double c;
double d;
Node (int32_t a, int32_t b, double c)
{
this->a = a;
this->b = b;
this->c = c;
this->d = 0.0;
}
};
我正在实现这样的地图:
unordered_map<UInt32,unordered_map<int32_t,Node>> data;
使用下面的代码。我收到错误 error: no matching function for call to 'Node::Node()' second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
data[instId][id].d += (value);
请帮助解决我收到错误的原因。我也试过使用 auto& tree = data[instId]; tree[id].d += (value);
(PS:提到了伪代码)
这是因为 unordered_map<int32_t,Node>
尝试调用不带参数的构造函数 Node(),并且因为您定义了具有三个参数的构造函数,所以 Node() 被删除。考虑在 class 定义中添加 Node()=default;
。
我定义了这样的结构:
struct Node
{
int32_t a;
int32_t b;
double c;
double d;
Node (int32_t a, int32_t b, double c)
{
this->a = a;
this->b = b;
this->c = c;
this->d = 0.0;
}
};
我正在实现这样的地图:
unordered_map<UInt32,unordered_map<int32_t,Node>> data;
使用下面的代码。我收到错误 error: no matching function for call to 'Node::Node()' second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...)
data[instId][id].d += (value);
请帮助解决我收到错误的原因。我也试过使用 auto& tree = data[instId]; tree[id].d += (value);
(PS:提到了伪代码)
这是因为 unordered_map<int32_t,Node>
尝试调用不带参数的构造函数 Node(),并且因为您定义了具有三个参数的构造函数,所以 Node() 被删除。考虑在 class 定义中添加 Node()=default;
。