Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Aupperle klappt heute nicht, also mal wieder YIP...

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 < [ 2 ]
000
15.09.2006, 23:36 Uhr
Yadgar



High!

Und weiter geht es mit Yadgar's Image Processor, dem absolut revolutionären und 100 % Khyberspace-kompatiblen Kommandozeilen-Grafikprogramm...

Ich habe mir gedacht, dass ich am besten neben den bereits vorhandenen Klassen für Pixel und komplette Bilder auch eine Klasse für Programmbefehle programmiere:


C++:
class Command
{
   private:
      string name; // der Befehl selbst
      unsigned short params; // Anzahl der erforderlichen Parameter
      string helptxt; // Kurzbeschreibung, die nach dem Befehl --help angezeigt wird
      string errormsgs[]; // Fehlermeldung(en)
   public:
      Command(string in_name, unsigned short in_params, string in_helptxt, string in_errormsgs[]); // Konstruktor
};



So weit, so schlicht... allerdings frage ich mich jetzt, ob ich den Konstruktor tatsächlich so aufrufen kann:


C++:
Command commands[1]
(
  "-count",
  2,
  "Zählt Pixel einer bestimmten Farbe.",
  {"Datei konnte nicht geladen werden!", "Kein gültiger Farbwert!"}
);



(zur Erklärung: die Command-Objekte sollen in einem globalen Array verwaltet werden... ich weiß, dass das von der Speichereffizienz her nicht so der Hit ist, aber ich will erstmal überhaupt eine Rohversion zum Laufen bekommen und mich hinterher dann mit dem "Tuning" beschäftigen...)

Und wie übergebe ich dem Konstruktor (im Fall von --help, das keine Befehlsparameter und daher auch keine spezifischen Fehlermeldungen hat) ein leeres String-Array?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2006, 09:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wie wärs mit {""} ?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2006, 11:11 Uhr
Yadgar



High!


Zitat von FloSoft:
wie wärs mit {""} ?


O.k.... aber das Beispiel darüber (String-Array mit zwei Elementen) ist doch korrekt, oder?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2006, 15:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


nein, das wird imho so nicht funktionieren. ein Array ohne dimension geht in der form imho nicht.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2006, 17:54 Uhr
Yadgar



High!


Zitat von FloSoft:
nein, das wird imho so nicht funktionieren. ein Array ohne dimension geht in der form imho nicht.


Also bleibt mir nichts anderes übrig, als das String-Array außerhalb des Konstruktors als Variable zu definieren und diese dann an den Konstruktor zu übergeben?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.09.2006, 18:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi nein - das objekt mit array mit undefinierter größe kannst du imho so nicht schreiben - dürfte er dir so nicht abnehmen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.09.2006, 19:05 Uhr
Pablo
Supertux
(Operator)


Statt ein Array unbekannter Länge zu benutzen, kannst du std::vector<string> benutzen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.09.2006, 23:55 Uhr
Yadgar



High!


Zitat von FloSoft:
hi nein - das objekt mit array mit undefinierter größe kannst du imho so nicht schreiben - dürfte er dir so nicht abnehmen.


Ich meinte eigentlich:

string a[2]={"Datei konnte nicht geladen werden!", "Kein gültiger Farbwert!"};

Command commands[1]
(
[...]
a[2]
);

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.09.2006, 10:36 Uhr
Blubber2063



Keine Ahnung ob er das implizit konvertiert, musst mal probieren, aber Flosoft meinte eigentlich das dein Objekt nur einen Pointer oder ein Array fester Größe beinhalten kann, aber nicht ein Array undefinierter Größe, also diese Notation "[]";
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.09.2006, 12:32 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
das Ganze wird aus mehreren Gründen nicht funktionieren.
-du kannst den Konstruktor nicht nachträglich aufrufen.In dem Augenblick wo du das Array definierst werden die Elemente mit dem Standardkonstruktor erzeugt.
-ist errormsgs[] nen unvollständiger Typ der vom Compiler imho nur in direkter Verbindung mit einer Initialisierungsliste,aus der für den Compiler die Anzahl der Elemente ersichtlich ist,akzeptiert wird.
-sollte es dir irgendwie gelingen errormsgs zu "befüllen" weißt du anschliessend nicht mehr wieviele Elemente in errormsgs sind. sizeof(errormsgs)/sizeof(errormsgs[0]) kannst du vergessen.

Nimm nen Container wie ne Liste oder nen Vector und alles wird gut.

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: