KingJoshii1000
Lieutenant
- Registriert
- Apr. 2010
- Beiträge
- 879
Hallo,
ich habe mir vorgenommen ein simples Programm zu schreiben, welches Namen und Alter ein jeweilige Vectoren einliest. Nun möchte ich auch einen Befehl einbauen, welcher die verfügbaren Befehle kurz ausgibt. Dabei möchte ich gerne, alle Befehle in einen Vector<string> packen, welcher von einem seperaten Thread über eine Funktion gefüllt wird. Dabei wird der Vector in der Main-Funktion deklariert und via Referenz über die Funktion gefüllt. Jedoch wenn ich nun 'h' eingebe, erfolgt eine leere Ausgabe. Der Vector wurde nicht bearbeitet. Wenn ich die Funktion "normal" aufrufe, sprich nicht von einem Extrathread wird der Vector erfolgreich gefüllt. Wo genau liegt der Fehler?
Wünsche ein schönes Wochenende
Mit freundlichen Grüßen
ich habe mir vorgenommen ein simples Programm zu schreiben, welches Namen und Alter ein jeweilige Vectoren einliest. Nun möchte ich auch einen Befehl einbauen, welcher die verfügbaren Befehle kurz ausgibt. Dabei möchte ich gerne, alle Befehle in einen Vector<string> packen, welcher von einem seperaten Thread über eine Funktion gefüllt wird. Dabei wird der Vector in der Main-Funktion deklariert und via Referenz über die Funktion gefüllt. Jedoch wenn ich nun 'h' eingebe, erfolgt eine leere Ausgabe. Der Vector wurde nicht bearbeitet. Wenn ich die Funktion "normal" aufrufe, sprich nicht von einem Extrathread wird der Vector erfolgreich gefüllt. Wo genau liegt der Fehler?
Code:
#include "standart.h"
#include <thread>
using namespace standart;
const char quit = 'q';
const char help = 'h';
const char name = 'n';
const char age = 'a';
void add_available_commands(vector<string>&);
int main(){
name_pairs np;
vector<string>available_commands;
thread add_commands(add_available_commands,available_commands);
add_commands.join();
char input = ' ';
cout << "Geben Sie h fuer Hilfe ein, um alle Befehle aufzulisten." << endl;
cout << ">";
while (cin >> input)
{
switch (input)
{
case name:
np.read_names();
cout << "Namenseingabe erfolgreich beendet." << endl;
break;
case age:
np.read_ages();
cout << "Alterseingabe erfolgreich beendet." << endl;
break;
case quit:
return 0;
case help:
for (int i = 0; i < available_commands.size(); ++i){
cout << available_commands[i] << endl;
}
break;
default:
cout << "Dieser Befehl ist nicht bekannt." << endl;
break;
}
cout << ">";
}
keep_window_open();
}
void add_available_commands(vector<string>& a_c){
//Fügt alle Befehle über eine Referenz dem Vector<string>available_commands hinzu.
a_c.push_back("Verfuegbare Befehle: ");
a_c.push_back("n = Startet die Nameseingabe.");
a_c.push_back("a = Startet die Alterseingabe.");
}
Wünsche ein schönes Wochenende
Mit freundlichen Grüßen
