C++ 在C+;中模拟Python字典时出现映射错误+;

C++ 在C+;中模拟Python字典时出现映射错误+;,c++,dictionary,typeerror,C++,Dictionary,Typeerror,如能帮助解决此错误,将不胜感激。 下面我举一个例子: 根据定义的语法,我假设代码中的字典定义是正确的,但是它显示了一个类型错误 您需要将代码放入某种函数中。在函数之外,您只能拥有声明之类的东西。放 main.cpp:10:1: error: ‘pre_flight’ does not name a type pre_flight["Parking Brakes"]="SET"; ^~~~~~~~~~ main.cpp:11:1: error: ‘pre_flight’ does not n

如能帮助解决此错误,将不胜感激。 下面我举一个例子:


根据定义的语法,我假设代码中的字典定义是正确的,但是它显示了一个类型错误

您需要将代码放入某种函数中。在函数之外,您只能拥有声明之类的东西。放

main.cpp:10:1: error: ‘pre_flight’ does not name a type
 pre_flight["Parking Brakes"]="SET";
 ^~~~~~~~~~
main.cpp:11:1: error: ‘pre_flight’ does not name a type
 pre_flight["Battery Switch"]="ON";
 ^~~~~~~~~~
main.cpp:12:1: error: ‘pre_flight’ does not name a type
 pre_flight["APU Generator"]="OFF";
 ^~~~~~~~~~
main.cpp:13:1: error: ‘pre_flight’ does not name a type
 pre_flight["APU Master Knob"]="OFF";
 ^~~~~~~~~~
main.cpp:14:1: error: ‘pre_flight’ does not name a type
 pre_flight["External Power"]="ON";
 ^~~~~~~~~~
main.cpp:15:1: error: ‘pre_flight’ does not name a type
 pre_flight["Landing Gear"]="DOWN";
 ^~~~~~~~~~
main.cpp:16:1: error: ‘pre_flight’ does not name a type
 pre_flight["Flaps Lever"]="UP";
 ^~~~~~~~~~
main.cpp:17:1: error: ‘pre_flight’ does not name a type
 pre_flight["Speedbrakes Lever"]="RETR.";
 ^~~~~~~~~~
main.cpp:18:1: error: ‘pre_flight’ does not name a type
 pre_flight["Engine Fuel Controls"]="CUTOFF";
 ^~~~~~~~~~
main.cpp:19:1: error: ‘pre_flight’ does not name a type
 pre_flight["Fuel Pump Switches"]="OFF";
 ^~~~~~~~~~
main.cpp:20:1: error: ‘pre_flight’ does not name a type
 pre_flight["Engine Instruments"]="CHECK";
 ^~~~~~~~~~
main.cpp:21:1: error: ‘pre_flight’ does not name a type
 pre_flight["Anti-Ice Controls"]="AUTO";
 ^~~~~~~~~~
main.cpp:22:1: error: ‘pre_flight’ does not name a type
 pre_flight["Altitude Setting"]="SET";
 ^~~~~~~~~~
main.cpp:23:1: error: ‘pre_flight’ does not name a type
 pre_flight["IFR Clearance"]="REQUEST";
 ^~~~~~~~~~
main.cpp:24:1: error: ‘pre_flight’ does not name a type
 pre_flight["Fuel Quantity"]="CHECK";
 ^~~~~~~~~~
main.cpp:25:1: error: ‘pre_flight’ does not name a type
 pre_flight["Beacon Lighting"]="ON";
 ^~~~~~~~~~
main.cpp:29:1: error: ‘before_startup’ does not name a type
 before_startup["Seat Belt Sign"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:30:1: error: ‘before_startup’ does not name a type
 before_startup["Fuel Quantity"]="CHECK";
 ^~~~~~~~~~~~~~
main.cpp:31:1: error: ‘before_startup’ does not name a type
 before_startup["Engine Throttle"]="IDLE";
 ^~~~~~~~~~~~~~
main.cpp:32:1: error: ‘before_startup’ does not name a type
 before_startup["Engines Area"]="CLEAR";
 ^~~~~~~~~~~~~~
main.cpp:33:1: error: ‘before_startup’ does not name a type
 before_startup["Auto-brake Setting"]="RTO";
 ^~~~~~~~~~~~~~
main.cpp:34:1: error: ‘before_startup’ does not name a type
 before_startup["Yaw Damper"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:35:1: error: ‘before_startup’ does not name a type
 before_startup["Fly-by-wire Setting"]="CHECK";
 ^~~~~~~~~~~~~~
main.cpp:36:1: error: ‘before_startup’ does not name a type
 before_startup["Hydraulic ENG Pumps"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:37:1: error: ‘before_startup’ does not name a type
 before_startup["Hydraulic ELEC C1 Pump"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:38:1: error: ‘before_startup’ does not name a type
 before_startup["AC Packs 1 and 2"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:39:1: error: ‘before_startup’ does not name a type
 before_startup["Equipment Cooling"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:40:1: error: ‘before_startup’ does not name a type
 before_startup["Fuel Pumps"]="ON";
 ^~~~~~~~~~~~~~
main.cpp:41:1: error: ‘before_startup’ does not name a type
 before_startup["Startup Clearance"]="REQUEST";
 ^~~~~~~~~~~~~~
main.cpp:47:1: error: ‘engines_startup’ does not name a type
 engines_startup["APU Master Knob"]="ON";
 ^~~~~~~~~~~~~~~
main.cpp:48:1: error: ‘engines_startup’ does not name a type
 engines_startup["APU Generator"]="ON";
 ^~~~~~~~~~~~~~~
main.cpp:49:1: error: ‘engines_startup’ does not name a type
 engines_startup["Engine EEC Modes"]="ON";
 ^~~~~~~~~~~~~~~
main.cpp:50:1: error: ‘engines_startup’ does not name a type
 engines_startup["Engine Starter Knob"]="START";
 ^~~~~~~~~~~~~~~
main.cpp:51:1: error: ‘engines_startup’ does not name a type
 engines_startup["Engine Fuel Controls"]="RUN";
 ^~~~~~~~~~~~~~~
main.cpp:52:1: error: ‘engines_startup’ does not name a type
 engines_startup["Engine Generators L1, R1"]="ON";
 ^~~~~~~~~~~~~~~
main.cpp:57:1: error: ‘before_taxi’ does not name a type
 before_taxi["Parking Brakes"]="SET";
 ^~~~~~~~~~~
main.cpp:58:1: error: ‘before_taxi’ does not name a type
 before_taxi["Fuel Quantity"]="CHECK";
 ^~~~~~~~~~~
main.cpp:59:1: error: ‘before_taxi’ does not name a type
 before_taxi["Taxi Lights"]="ON";
 ^~~~~~~~~~~
main.cpp:60:1: error: ‘before_taxi’ does not name a type
 before_taxi["Navigation Lights"]="ON";
 ^~~~~~~~~~~
main.cpp:61:1: error: ‘before_taxi’ does not name a type
 before_taxi["Instrument Displays"]="CHECK";
 ^~~~~~~~~~~
main.cpp:62:1: error: ‘before_taxi’ does not name a type
 before_taxi["Taxi Clearance"]="REQUEST";
 ^~~~~~~~~~~
main.cpp:66:1: error: ‘taxi’ does not name a type
 taxi["Flight Directors"]="ON";
 ^~~~
main.cpp:67:1: error: ‘taxi’ does not name a type
 taxi["Parking Brakes"]="OFF";
 ^~~~
main.cpp:71:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Take Off Flaps"]="SET";
 ^~~~~~~~~~~~
main.cpp:72:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Speed Brakes"]="RETRACTED";
 ^~~~~~~~~~~~
main.cpp:73:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Instruments"]="CHECK";
 ^~~~~~~~~~~~
main.cpp:74:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Landing Lights"]="ON";
 ^~~~~~~~~~~~
main.cpp:75:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Strobe Lights"]="ON";
 ^~~~~~~~~~~~
main.cpp:76:1: error: ‘pre_take_off’ does not name a type
 pre_take_off["Parking Brakes"]="OFF";
 ^~~~~~~~~~~~
main.cpp:78:11: error: ‘::main’ must return ‘int’
 void main()
           ^
main.cpp: In function ‘int main()’:
main.cpp:84:17: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      pre_flight();
                 ^
main.cpp:87:21: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      before_startup();
                     ^
main.cpp:90:22: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      engines_startup();
                      ^
main.cpp:93:18: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      before_taxi();
                  ^
main.cpp:96:11: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      taxi();
           ^
main.cpp:99:19: error: no match for call to ‘(Dict {aka std::map, std::basic_string >}) ()’
      pre_take_off();
                   ^
main.cpp: In function ‘void pre_flight()’:
main.cpp:108:17: error: ‘void pre_flight()’ redeclared as different kind of symbol
 void pre_flight(){
                 ^
main.cpp:8:6: note: previous declaration ‘Dict pre_flight’
 Dict pre_flight;
      ^~~~~~~~~~
main.cpp: In function ‘void before_startup()’:
main.cpp:130:21: error: ‘void before_startup()’ redeclared as different kind of symbol
 void before_startup(){
                     ^
main.cpp:27:6: note: previous declaration ‘Dict before_startup’
 Dict before_startup;
      ^~~~~~~~~~~~~~
main.cpp: In function ‘void engines_startup()’:
main.cpp:152:22: error: ‘void engines_startup()’ redeclared as different kind of symbol
 void engines_startup(){
                      ^
main.cpp:43:6: note: previous declaration ‘Dict engines_startup’
 Dict engines_startup;
      ^~~~~~~~~~~~~~~
main.cpp: In function ‘void before_taxi()’:
main.cpp:173:18: error: ‘void before_taxi()’ redeclared as different kind of symbol
 void before_taxi(){
                  ^
main.cpp:55:6: note: previous declaration ‘Dict before_taxi’
 Dict before_taxi;
      ^~~~~~~~~~~
main.cpp: In function ‘void taxi()’:
main.cpp:194:11: error: ‘void taxi()’ redeclared as different kind of symbol
 void taxi(){
           ^
main.cpp:64:6: note: previous declaration ‘Dict taxi’
 Dict taxi;
      ^~~~
main.cpp: In function ‘void pre_take_off()’:
main.cpp:216:19: error: ‘void pre_take_off()’ redeclared as different kind of symbol
 void pre_take_off(){
                   ^
main.cpp:69:6: note: previous declaration ‘Dict pre_take_off’
 Dict pre_take_off;
      ^~~~~~~~~~~~

除了在main函数或其他函数中声明之外,其余代码都会执行一些操作。

您要做的是初始化映射,但实际上您正在创建一个空映射,并通过添加值来更改它。这会导致错误,因为您试图在块范围之外更改全局变量

在这种情况下,您应该在声明时初始化映射

例如,使用大括号初始化:

pre_flight["Parking Brakes"]="SET";
std::飞行前地图{{“停车制动器”,“设置”},
{“APU生成器”、“关闭”},
{“APU主旋钮”,“关闭”};
我遵循下面的例子——可执行代码进入C++中的函数,就像链接到的示例一样。
pre_flight["Parking Brakes"]="SET";
std::map<std::string, std::string> pre_flight{{"Parking Brakes", "SET"},
                                              {"APU Generator", "OFF"},
                                              {"APU Master Knob", "OFF"}};