Tho*_*hom 12 c++ stl visual-c++
我的C++程序中出现以下错误:
1> c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.cpp(14) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled
Run Code Online (Sandbox Code Playgroud)
这在错误堆栈中有点下降,但指向这行代码:
static std::map<const std::string, Timezone> timezoneMap;
Run Code Online (Sandbox Code Playgroud)
原因是Timezone有一个相当复杂的构造函数,但没有默认的构造函数.这是错误的一部分:
c:\program files\microsoft visual studio 10.0\vc\include\map(215): error C2512: 'Timezone::Timezone' : no appropriate default constructor available
Run Code Online (Sandbox Code Playgroud)
1> c:\ program files\microsoft visual studio 10.0\vc\include\map(210):同时编译类模板成员函数'Timezone&std :: map <_Kty,_Ty> :: operator [](const std :: basic_string <_Elem,_Traits,_Ax>&)'
我的问题是,为什么?为什么地图试图构造时区对象?如果我总是将完全成形的物体放入我的地图中,为什么还需要呢?特别是,当我初始化地图时为什么会出现这个错误?
Mar*_*k B 17
你可能使用map的operator[]这确实需要默认的构造函数(如果没有,会是怎样处理这种情况的关键并不在地图上存在的情况?).如果您使用的insert,而不是你可能能够逃脱不提供一个(如果该标准要求所有的地图默认的构造函数我不记得,或者只是当您使用的运营商).
| 归档时间: |
|
| 查看次数: |
9687 次 |
| 最近记录: |