我有一个简单的对象:
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/