Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;无序映射错误_C++_Types_Unordered Map - Fatal编程技术网

C++ C++;无序映射错误

C++ C++;无序映射错误,c++,types,unordered-map,C++,Types,Unordered Map,我试图在我的程序中声明一个无序映射,在这个程序中,我将把它们映射到另一个文件中的令牌 我需要一个返回Token.h(它是枚举类)中的令牌类型的方法 让我困惑的是,既然我想将映射标记从无序映射返回到枚举类,那么该方法的返回类型应该是什么?此外,它还指出 错误:“无序映射”未命名类型 我对C++非常陌生,在这种情况下我还是觉得我应该如何声明方法有点困难。我已经读到无序映射应该在一个方法中声明,但是既然我想要映射返回的值,那么哪个应该是返回类型呢 我试过这个 测试1 tokenlexer::getT

我试图在我的程序中声明一个无序映射,在这个程序中,我将把它们映射到另一个文件中的令牌

我需要一个返回Token.h(它是
枚举类
)中的令牌类型的方法

让我困惑的是,既然我想将映射标记从
无序映射
返回到
枚举类
,那么该方法的返回类型应该是什么?此外,它还指出

错误:“无序映射”未命名类型

<>我对C++非常陌生,在这种情况下我还是觉得我应该如何声明方法有点困难。我已经读到无序映射应该在一个方法中声明,但是既然我想要映射返回的值,那么哪个应该是返回类型呢


我试过这个

测试1
tokenlexer::getTokenType()
{
无序映射标记类型;
}
这将输出以下错误:

测试2我试过这个

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <sstream>
#include <wctype.h>
#include <map>


#include "lexer.h"


using namespace std;

long Row, Col, Offset;

unordered_map<string, Token> ProtectedWords
{

}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括“lexer.h”
使用名称空间std;
长行、列、偏移;
无序映射保护字
{
}

无序映射::Lexer::getTokenType() { } 还是一样

它的错误是:

我知道这些听起来很愚蠢,但你能给我解释一下吗?正如我在教程中所遵循的那样,很多是在方法内部调用的,但即使这样也不起作用



您需要包括


如果还没有启用C++11支持,您还需要启用:对于GCC,请确保编译器参数包括
-std=C++11
(或者
C++0x
,如果您使用的是旧编译器)。

您需要包括


如果您还没有启用C++11支持,您还需要启用:对于GCC,请确保编译器参数包括
-std=C++11
(或者
C++0x
,如果您使用的是旧编译器)。

\include使用的头文件与。看起来您不是
\include
(或者boost/unordered_-map,或者tr1/unordered_-map,具体取决于您使用的编译器)您使用哪个版本的编译器以及使用什么标志?无序映射在c++11中是标准化的。请以后不要发布文本图像。而是将文本复制并粘贴到问题中。我确信错误(以及完整的构建日志)不会发生可以作为文本获取。#include使用不同于的头文件。看起来您不是
#include
(或boost/unordered_映射,或tr1/unordered_映射,具体取决于您使用的编译器)你使用哪个版本的编译器,使用什么标志?无序映射在c++11中是标准化的。请以后不要发布文本图像。将文本复制并粘贴到问题中。我确信错误(并完成构建日志)可以作为文本获取。我注意到我包含了错误的映射,并且我使用了C++11。结果仍然是一样的。因为我想返回令牌类型,哪种方法应该是声明方法的最佳方式?@DodoSerebro:
令牌Lexer::getTokenType()
如果应该返回单个令牌,则应该可以。如何实现它完全取决于您尝试执行的操作-您需要从某处获取
令牌(可能是存储为
Lexer
成员的映射)然后返回它。我有一个名为Token.cpp和Token.h…Token.h的文件,它是一个枚举类,包含解析器/编译器所需的所有标记。现在,我将检查每个字符并添加到缓冲区,然后与标记列表进行比较,匹配后,我将返回我注意到包含错误映射的特定标记,以及also我是usign C++11。结果仍然是一样的。因为我想返回令牌类型,哪种方法应该是声明方法的最佳方法?@DodoSerebro:
Token Lexer::getTokenType()
如果应该返回单个令牌,则应该可以。如何实现它完全取决于您尝试执行的操作-您需要从某处获取
令牌(可能是存储为
Lexer
成员的映射)然后返回它。我有一个名为Token.cpp和Token.h…Token.h的文件,它是一个枚举类,包含解析器/编译器所需的所有标记。现在我将检查每个字符并添加到缓冲区,然后与标记列表进行比较,匹配后,我将返回该特定标记
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <sstream>
#include <wctype.h>
#include <map>


#include "lexer.h"


using namespace std;

long Row, Col, Offset;

unordered_map<string, Token> ProtectedWords
{

}
unordered_map<string, Token>::Lexer::getTokenType()
{
}