Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit globalem Vektor

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.12.2006, 23:19 Uhr
Yadgar



High!

Da bin ich wieder... habe zwischenzeitlich die Definition der Klasse Command nach 0xdeadbeefs und J-jayz-Zs Empfehlungen umgestellt, eine Anzeige-Methode für die Elemente von Command hinzugefügt und schon ein mal ein rudimentäres Command-Array mit einem Mitglied (dem Hilfe-Kommando --help) definiert... jetzt habe ich allerdings das Problem, dass ich das Array (da ja eine ganze Reihe von Funktionen auf die Command-Objekte werden zugreifen müssen) global definiert habe - ich bekomme für


C++:
errmsglist.push_back("");



die Fehlermeldung yip.cpp:20: error: syntax error before `.' token

Hier die Zeile im Kontext:


C++:
// YIP - Yadgar's Image Processor

#include <iostream>
#include <fstream>
#include <string>

using namespace std;
#include "yip_classes.h"


#define TEST
#undef TEST

const unsigned short nCommands = 1; // Anzahl der bereits implementierten Befehle



vector<string> errmsglist;

errmsglist.push_back(""); // beim Kommando --help sind mangels Parameter spezifische Fehlermeldungen wenig sinnvoll

Command commands[nCommands]={Command("--help", 0, "Zeigt alle Kommandos mit Kurzerläuterungen an", &errmsglist)};






int main(int argc, char* argv[])
{
   ...
]



Was mache ich falsch? Sind außerhalb von Funktionen grundsätzlich nur Deklarationen und Initialisierungen erlaubt, aber keine Funktionsaufrufe?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 21.12.2006 um 23:19 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.12.2006, 00:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Was mache ich falsch? Sind außerhalb von Funktionen grundsätzlich nur Deklarationen und Initialisierungen erlaubt, aber keine Funktionsaufrufe?


Ja mach die "Schweinereien innerhalb von Funktionen (oder noch besser innerhalb des Konstruktors einer Klasse)...

Warum willst du das überhaupt als global definieren. Das macht man nur wenn es überhaupt nicht anders geht. Hier seh ich überhaupt keine notwendigkeit...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.01.2007, 21:23 Uhr
Yadgar



High!


Zitat von Windalf:

Ja mach die "Schweinereien innerhalb von Funktionen (oder noch besser innerhalb des Konstruktors einer Klasse)...



Das sehe ich ein, nur...


Zitat von Windalf:

Warum willst du das überhaupt als global definieren. Das macht man nur wenn es überhaupt nicht anders geht. Hier seh ich überhaupt keine notwendigkeit...


Ich dachte mir, da eine ganze Anzahl von globalen Funktionen (der Parser und seine diversen "Unterfunktionen") auf das Command-Array werden zugreifen müssen, mache ich es global... andernfalls müsste ich das Command-Array innerhalb von main() definieren und jeder dieser Funktionen neben dem Konsolen-Eingabestring auch noch einen Zeiger auf ebendieses Command-Array übergeben... kommt mir ziemlich mühsam und wenig elegant vor - ich kann mich natürlich auch täuschen in dieser Ansicht!

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 22.01.2007 um 21:24 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.01.2007, 11:02 Uhr
stephanw
localhorst



Zitat:
Ich dachte mir, da eine ganze Anzahl von globalen Funktionen (der Parser und seine diversen "Unterfunktionen") auf das Command-Array werden zugreifen müssen, mache ich es global... andernfalls müsste ich das Command-Array innerhalb von main() definieren und jeder dieser Funktionen neben dem Konsolen-Eingabestring auch noch einen Zeiger auf ebendieses Command-Array übergeben... kommt mir ziemlich mühsam und wenig elegant vor - ich kann mich natürlich auch täuschen in dieser Ansicht!


Geht es jetzt um den vector<string> errmsglist oder um das Command-Array ? In beiden Fällen kannst Du eine Verbesserung dadurch erreichen, dass Du die entsprechende Idee als Klasse abbildest. Z.B. ErrorLog und CommandList oder wie auch immer. Wenn es tatsächlich nur eine Instanz dieser Klasse(n) geben darf, solltest Du Dir die DesignPattern Singleton oder Monostate anschauen und das damit machen, anstatt jedem Teil des Programmes den kompletten Zugriff auf ein C-Array oder vector zu geben.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: