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;