C++什么是"从这里实例化"错误?

260*_*607 4 c++ struct std

我是C++编程的新手,我想知道什么是"从这里实例化"错误?

struct Data {
    Data(int a, int b) {
        x = a;
        y = b;
    }
    int x;
    int y;
};

std::map<int, Data> m;
m[1] = Data(1, 2);
Run Code Online (Sandbox Code Playgroud)

我收到了几条错误消息

  • 没有用于调用"Data :: Data()"的匹配函数
  • "从这里实例化"错误

谢谢.

hmj*_*mjd 8

没有默认构造函数struct Data.在map::operator[]返回默认构造它的值类型的实例,在这种情况下struct Data.

提供默认构造函数:

Data() : x(0), y(0) {}
Run Code Online (Sandbox Code Playgroud)

或使用std::map::insert():

m.insert(std::pair<int, Data>(1, Data(1, 2)));
Run Code Online (Sandbox Code Playgroud)