PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array inerhalb einer klasse anlegen ??



jancarsten
14-11-2005, 18:27
HI!

Ich habe ein kleines Problem mit anlegen eines Array inerhalb einer Klasse.

Hier die Klasse:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Fahrzeug {

private:
static string Basisausstattung[]={"test","test3"};

public:

Fahrzeug();
~Fahrzeug();


};

Und hier die Fehlermeldung:



(16) : error C2059: Syntaxfehler: '{'
(16) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen
Fahrzeug.cpp
(16) : error C2059: Syntaxfehler: '{'
(16) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen


Kann man etwa keine Array inerhalb einer Klasse anlegen oder wie soll ich die Fehlermeldung verstehen??

Diese Klasse soll als Basis-Klasse eine Fahrzeugherstellers dienen. Da ich annehmen das jedes Fahrzeug des Herstellers eine bestimmte Ausstattung hat.
Auserdem möchte ich später die Möglichlichkeit haben die Basisausstattung zu ändern, auch für Farhzeug die eventuell schon in der "Produktion" sind (Nach anlegen eines neuen Objektes).

ContainerDriver
14-11-2005, 18:41
Hallo.

Du darfst bei der Klassendefiniton den Variablen keine Werte zuordnen (AFAIR), dafür ist der Konstruktor da.

Gruß, Florian

peschmae
14-11-2005, 18:45
Statische member musst du grundsätzlich ausserhalb der Klassendefinition initialisieren. Einfach irgendwo:



string[] Fahrzeug::Basisaustattung = {"test", "test2"};


Allerdings geht der Code so nicht, das haut irgendwie nur für "normale" static members hin, wie das mit Arrays aussieht da bin ich überfragt.

Mein Fehler, das sollte so aussehen und geht dann auch:

string Fahrzeug::Basisausstattung[] = {"test", "test2" };


MfG Peschmä

jancarsten
14-11-2005, 18:52
OKI man dankt !! Das werde ich morgen mal testen ;)

panzi
15-11-2005, 19:37
Find ich eigentlich erstaunlich das c++ das so packt und man nciht das schreiben muss:

string Fahrzeug::Basisausstattung[] = {string("test"), string("test2") };

peschmae
15-11-2005, 19:48
So Zeugs macht C++ eigentlich immer implizit. Vorausgesetzt es gibt einen passenden Konstruktor in der String-Klasse und es gibt nicht zwei "gleichwertige" bei denen er nicht weiss welchen auswählen.

MfG Peschmä