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

标签 c++ c++11

我有一个简单的对象:

struct TimeObject {
    private:
       UInt64 m_currentTime;
       bool m_isStarted;
}

此对象在另一个结构的映射中使用:

std::map<Utf8String, TimeObject> m_myMap;   // *

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

m_myMap = new std::map<Utf8String, TimeObject>();

似乎是说定义(* 所在的位置)导致以下错误:错误:命名空间“std”中的“map”未命名模板类型

问题的第一部分是:理解错误。当你明白你可以努力解决它。我的第一个猜测是结构 TimeObject 是在同一个文件中创建的,并且在编译该行时未定义其定义,因此会引发错误。即使该结构未在另一个结构中声明,也会发生这种情况,但如下所示:

struct TimeObject{}
struct MyNewObject
{
    private: std::map<Utf8String,TimeObject> m_myMap;
}

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

最佳答案

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

关于c++ - map 没有为自定义结构命名模板类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30733073/

相关文章:

c++ - 关于C++中智能指针的问题

并发环境中的 C++11 std::vector

c++ - 初始化指向结构的指针 - 编译器警告

c++ - 为什么 BOOST_TEST((Iterator == Iterator)) 需要额外的括号?

c++ - 调用可变大小的数组作为参数

c++ - 编译 Havok 演示

c++ - 如何在复杂的 cpp 项目中打印 gdb 中的 Armadillo 矩阵?

c++ - 在编译时设置静态常量值(不是通过预处理器)

c++ - 为什么下面这段带有非常量转换函数的代码没有歧义呢?

c++ - 氧气警告 : ignoring unknown tag