【发布时间】:2011-12-22 05:49:58
【问题描述】:
我的 C++ 程序出现以下错误:
1> c:\users\thom\documents\cworkspace\barnaby\barnaby\timezone.cpp(14) : see reference to class template instantiation 'std::map<_Kty,_Ty>' being compiled
这在错误堆栈中有点下降,但指向这行代码:
static std::map<const std::string, Timezone> timezoneMap;
原因是 Timezone 有一个相当复杂的构造函数,但没有默认构造函数。这是错误的那一部分:
c:\program files\microsoft visual studio 10.0\vc\include\map(215): error C2512: 'Timezone::Timezone' : no appropriate default constructor available
1> c:\program files\microsoft visual studio 10.0\vc\include\map(210) : 在编译类模板成员函数 'Timezone &std::map<_kty>::operator [](const std ::basic_string<_elem> &)'
我的问题是,为什么?为什么地图试图构造一个 Timezone 对象?如果我总是将完全成形的对象放入我的地图中,为什么还需要它?特别是初始化地图时为什么会出现这个错误?
【问题讨论】:
标签: c++ visual-c++ stl