map没有为自定义结构命名模板类型

Fal*_*per 1 c++ c++11

我有一个简单的对象:

struct TimeObject {
    private:
       UInt64 m_currentTime;
       bool m_isStarted;
}
Run Code Online (Sandbox Code Playgroud)

此对象在另一个结构中的地图中使用:

std::map<Utf8String, TimeObject> m_myMap;   // *
Run Code Online (Sandbox Code Playgroud)

并在struct的构造函数中实例化:

m_myMap = new std::map<Utf8String, TimeObject>();
Run Code Online (Sandbox Code Playgroud)

似乎说定义(*所在的位置)会导致以下错误: 错误:命名空间'std'中的'map'没有命名模板类型

问题的第一部分是:理解错误.当您了解自己可以解决问题时.我的第一个猜测是结构TimeObject是在同一个文件中创建的,并且在编译这一行时没有定义它的定义,所以它会抛出一个错误.即使结构未在其他结构中声明,但发生了这种情况,但如下所示:

struct TimeObject{}
struct MyNewObject
{
    private: std::map<Utf8String,TimeObject> m_myMap;
}
Run Code Online (Sandbox Code Playgroud)

那么这个特殊的错误尖叫是什么?我应该在结构中定义TimeObject,以便它理解吗?

Tar*_*ama 5

你需要#include <map>.如果你写using namespace std;,或者using std::map;你不需要限定名称,但编译器仍然需要知道在哪里找到声明.