猿问

使用[]时,为什么C ++ map类型参数需要空构造函数?

使用[]时,为什么C ++ map类型参数需要空构造函数?

另请参见 C ++标准列表和默认构造类型

不是一个主要问题,只是烦人,因为我不希望我的类在没有特定参数的情况下被实例化。

#include <map>struct MyClass{
    MyClass(int t);};int main() {
    std::map<int, MyClass> myMap;
    myMap[14] = MyClass(42);}

这给了我以下g ++错误:

/usr/include/c++/4.3/bits/stl_map.h:419:错误:没有用于调用'MyClass()'的匹配函数

如果我添加一个默认构造函数,这编译很好; 我确信它不是由不正确的语法引起的。


紫衣仙女
浏览 646回答 3
3回答
随时随地看视频慕课网APP
我要回答