Reputation: 73
#include <iostream>
#include <map>
using namespace std;
typedef std::map<string, string> Dict;
typedef Dict::const_iterator It;
Dict pre_flight;
pre_flight["Parking Brakes"]="SET";
pre_flight["Battery Switch"]="ON";
pre_flight["APU Generator"]="OFF";
pre_flight["APU Master Knob"]="OFF";
pre_flight["External Power"]="ON";
pre_flight["Landing Gear"]="DOWN";
pre_flight["Flaps Lever"]="UP";
pre_flight["Speedbrakes Lever"]="RETR.";
pre_flight["Engine Fuel Controls"]="CUTOFF";
pre_flight["Fuel Pump Switches"]="OFF";
pre_flight["Engine Instruments"]="CHECK";
pre_flight["Anti-Ice Controls"]="AUTO";
pre_flight["Altitude Setting"]="SET";
pre_flight["IFR Clearance"]="REQUEST";
pre_flight["Fuel Quantity"]="CHECK";
pre_flight["Beacon Lighting"]="ON";
Dict before_startup;
before_startup["Seat Belt Sign"]="ON";
before_startup["Fuel Quantity"]="CHECK";
before_startup["Engine Throttle"]="IDLE";
before_startup["Engines Area"]="CLEAR";
before_startup["Auto-brake Setting"]="RTO";
before_startup["Yaw Damper"]="ON";
before_startup["Fly-by-wire Setting"]="CHECK";
before_startup["Hydraulic ENG Pumps"]="ON";
before_startup["Hydraulic ELEC C1 Pump"]="ON";
before_startup["AC Packs 1 and 2"]="ON";
before_startup["Equipment Cooling"]="ON";
before_startup["Fuel Pumps"]="ON";
before_startup["Startup Clearance"]="REQUEST";
Dict engines_startup;
engines_startup["APU Master Knob"]="ON";
engines_startup["APU Generator"]="ON";
engines_startup["Engine EEC Modes"]="ON";
engines_startup["Engine Starter Knob"]="START";
engines_startup["Engine Fuel Controls"]="RUN";
engines_startup["Engine Generators L1, R1"]="ON";
Dict before_taxi;
before_taxi["Parking Brakes"]="SET";
before_taxi["Fuel Quantity"]="CHECK";
before_taxi["Taxi Lights"]="ON";
before_taxi["Navigation Lights"]="ON";
before_taxi["Instrument Displays"]="CHECK";
before_taxi["Taxi Clearance"]="REQUEST";
Dict taxi;
taxi["Flight Directors"]="ON";
taxi["Parking Brakes"]="OFF";
Dict pre_take_off;
pre_take_off["Take Off Flaps"]="SET";
pre_take_off["Speed Brakes"]="RETRACTED";
pre_take_off["Instruments"]="CHECK";
pre_take_off["Landing Lights"]="ON";
pre_take_off["Strobe Lights"]="ON";
pre_take_off["Parking Brakes"]="OFF";
void main()
{
string state;
cout << "Input the Check State: ";
cin >> state;
if (state == "Pre-Flight"){
pre_flight();
}
else if (state == "Before-Startup"){
before_startup();
}
else if (state == "Engines-Startup"){
engines_startup();
}
else if (state == "Before-Taxi"){
before_taxi();
}
else if (state == "Taxi"){
taxi();
}
else if (state == "Pre-Take-Off"){
pre_take_off();
}
else {
cout << "Enter a Valid State";
}
return 0;
}
void pre_flight(){
cout << "Input the State variables";
Dict pre_flight_input;
string texts[] = {"Parking Brakes", "Battery Switch", "APU Generator", "APU Master Knob", "External Power", "Landing Gear", "Flaps Lever", "Speedbrakes Lever", "Engine Fuel Controls",
"Fuel Pump Switches", "Engine Instruments", "Anti-Ice Controls", "Altitude Setting", "IFR Clearance", "Fuel Quantity", "Beacon Lighting"};
for( unsigned int a = 0; a < sizeof(texts); a = a + 1 )
{
cout << texts[a] << endl;
cin >> pre_flight_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (pre_flight[texts[b]] == pre_flight_input[texts[b]]){
}
else {
cout << "Warning! State Mismatch for " << texts[b] << ". State must be " << pre_flight[texts[b]] << endl;
}
}
}
void before_startup(){
cout << "Input the State variables";
Dict before_startup_input;
string texts[] = {"Seat Belt Sign","Fuel Quantity","Engine Throttle","Engines Area","Auto-brake Setting","Yaw Damper","Fly-by-wire Setting","Hydraulic ENG Pumps","Hydraulic ELEC C1 Pump","AC Packs 1 and 2","Equipment Cooling",
"Fuel Pumps", "Startup Clearance"};
for( unsigned int a =0; a < sizeof(texts); a = a + 1)
{
cout << texts[a] << endl;
cin >> before_startup_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (before_startup[texts[b]] == before_startup_input[texts[b]]){
}
else{
cout << "Warning! State Mismatch for " << texts[b] << ".State must be " << before_startup[texts[b]] << endl;
}
}
}
void engines_startup(){
cout << "Input the State variables";
Dict engines_startup_input;
string texts[] = {"APU Master Knob","APU Generator","Engine EEC Modes","Engine Starter Knob","Engine Fuel Controls","Engine Generators L1, R1"};
for( unsigned int a =0; a < sizeof(texts); a = a + 1)
{
cout << texts[a] << endl;
cin >> engines_startup_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (engines_startup[texts[b]] == engines_startup_input[texts[b]]){
}
else{
cout << "Warning! State Mismatch for " << texts[b] << ".State must be " << engines_startup[texts[b]] << endl;
}
}
}
void before_taxi(){
cout << "Input the State variables";
Dict before_taxi_input;
string texts[] = {"Parking Brakes","Fuel Quantity","Taxi Lights","Navigation Lights","Navigation Lights","Instrument Displays","Taxi Clearance"};
for( unsigned int a =0; a < sizeof(texts); a = a + 1)
{
cout << texts[a] << endl;
cin >> before_taxi_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (before_taxi[texts[b]] == before_taxi_input[texts[b]]){
}
else{
cout << "Warning! State Mismatch for " << texts[b] << ".State must be " << before_taxi[texts[b]] << endl;
}
}
}
void taxi(){
cout << "Input the State variables";
Dict taxi_input;
string texts[] = {"Flight Directors","Parking Brakes"};
for( unsigned int a =0; a < sizeof(texts); a = a + 1)
{
cout << texts[a] << endl;
cin >> taxi_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (taxi[texts[b]] == taxi_input[texts[b]]){
}
else{
cout << "Warning! State Mismatch for " << texts[b] << ".State must be " << taxi[texts[b]] << endl;
}
}
}
void pre_take_off(){
cout << "Input the State variables";
Dict pre_take_off_input;
string texts[] = {"Take Off Flaps","Speed Brakes","Instruments","Landing Lights","Strobe Lights","Parking Brakes"};
for( unsigned int a =0; a < sizeof(texts); a = a + 1)
{
cout << texts[a] << endl;
cin >> pre_take_off_input[texts[a]];
}
for( unsigned int b = 0; b < sizeof(texts); b = b + 1)
{
if (pre_take_off[texts[b]] == pre_take_off_input[texts[b]]){
}
else{
cout << "Warning! State Mismatch for " << texts[b] << ".State must be " << pre_take_off[texts[b]] << endl;
}
}
}
I was trying to create a simple Boeing 787 Pre-Flight Checklist checker using Maps in C++ which emulates Python Dictionary. However upon compiling, my error log message showcased the following:
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;
^~~~~~~~~~~~
Any help solving this error would be appreciated. I am following the example from here: Translating python dictionary to C++
As per the syntax defined, I assume the dictionary definition in my code is correct however, it's showcasing a type-error.
Upvotes: 0
Views: 60
Reputation: 441
What you want to do is initialize the map but in actual fact you are creating an empty map and changing it by adding values. This causes an error because you are trying to change the global variable outside of block scope.
In this case you should initialize the map at declaration.
For example using braced initialization:
std::map<std::string, std::string> pre_flight{{"Parking Brakes", "SET"},
{"APU Generator", "OFF"},
{"APU Master Knob", "OFF"}};
Upvotes: 0
Reputation: 35
You need to put the code inside a function of some sort. The only things you can have outside of functions are declarations and things like that. Put
pre_flight["Parking Brakes"]="SET";
and the rest of your code that does things, besides declaring, inside of your main or some other function.
Upvotes: 1