我有一个简单的对象:
struct TimeObject {
private:
UInt64 m_currentTime;
bool m_isStarted;
}
此对象在另一个结构的地图中使用:
std::map<Utf8String, TimeObject> m_myMap; // *
并在struct的构造函数中实例化:
m_myMap = new std::map<Utf8String, TimeObject>();
似乎说定义(*所在的位置)会导致以下错误: 错误:命名空间'std'中的'map'未命名模板类型
问题的第一部分是:理解错误。当您了解自己可以解决问题时。我的第一个猜测是struct TimeObject 是在同一个文件中创建的,并且在编译这一行时没有定义它的定义,所以它会抛出一个错误。即使结构未在其他结构中声明,但发生了这种情况,但如下所示:
struct TimeObject{}
struct MyNewObject
{
private: std::map<Utf8String,TimeObject> m_myMap;
}
那么这个特殊的错误尖叫是什么?我应该在结构中定义TimeObject,以便理解吗?
答案 0 :(得分:5)
您需要#include <map>
。如果你写using namespace std;
或using std::map;
,那么你不需要限定名称,但编译器仍然需要知道在哪里找到声明。