[C++] Syntaxfehler

Heinzi1991

Erfahrenes Mitglied
Hallo leibe Community, hab ein kleines aber doch schwerwiegendes Problem!

Ich habe ein Programm geschrieben, in dem alles außer dieser Zeile funktioniert:

Code:
command_objects = {echo_command, list_command, next_command, quit_command, show_command};

Der Compilier schreit das ein ";" vor der "{" und ein ";" vor der "}" fehlt!

Kann mir aber nicht vorstellen warum und mir fehlt auch keine Lösung ein, vl kann mir jemand helfen!
 
hier ein weiterer kleiner code ausschnitt, kann aber leider nicht mehr herzeigen!

Code:
void Game::initCommands()
{
	vector<Command*> command_objects;

	Echo *echo_command = new Echo("echo");
	List *list_command = new List("list");
	Next *next_command = new Next("next");
	Show *show_command = new Show("show");
	Quit *quit_command = new Quit("quit");

//dann kommt die Zeile von vorhin
c++11 eher nicht erlaubt!
 
Hallo,

dann musst du es so schreiben(initializer_list constructor):
C++:
vector<Command*> command_objects { echo_command, list_command, next_command, quit_command, show_command };
Gruß
MCoder
 
ok hab jetzt mehrere sachen probiert, funktioniert noch immer noch nicht, hier einmal mein ganze funktion.

Code:
void Game::initCommands()
{
	vector<Command*> command_objects;

	Echo *echo_command = new Echo("echo");
	List *list_command = new List("list");
	Next *next_command = new Next("next");
	Show *show_command = new Show("show");
	Quit *quit_command = new Quit("quit");

	command_objects = {echo_command, //bei dieser zeile fehlt ein ; nach der {
					   list_command, 
					   next_command, 
					   show_command,
					   quit_command
					  }; // hier fehlt ein ; vor der }

	for(unsigned int i = 0; i < command_objects.size(); i++)
	{
		possible_commands_[command_objects[i] -> getName()] = command_objects[i];
	}

}

Hoffe mir kann jemand sagen wo der blöde fehler liegt!
 
Hallo Heinzi1991

Weiterhin: Ohne C++11 ist diese Initialisierung nicht möglich. Wenn du Visual Studio verwendest heisst das VS 13 oder neuer.

Technische Frage:
Warum machst du ganz viele verschiedene Klassen für die Commands und übergibst denen dann aber dennoch ihren Namen? Ein 'Echo'-Kommand sollte ja wissen, dass er echo verwendet.

Viele Grüsse
Cromon
 
also wir müssen für jeden command eine klasse machen! ist ein übungsteil! wie würdet ihr sonst die commands initialisieren.

also bei uns läuft dsa so ab: in einer endlosschleife wird immer ass2> <command> <paramter> eingeben in der kommandozeile nun wie würdet ihr es machen dass das programm weiß um welchen command es sich handelt!
 
Hallo,

schreib doch:
C++:
vector<Command*> command_objects;

command_objects.push_back( new Echo("echo") );
command_objects.push_back( new List("list") );
command_objects.push_back( new Next("next") );
command_objects.push_back( new Show("show") );
command_objects.push_back( new Quit("quit") );

// ...
Am Programmende das "delete" für die erzeugten Objekte nicht vergessen!

Gruß
MCoder
 
Zurück