Seite 1 von 1

vector im privatebereich einer klasse

Verfasst: Mo Jan 09, 2012 5:48 am
von gizno82
Hallo Leute,

Da ich mich mit der stl noch nicht aus kenne wüsste ich mal gerne warum es nicht möglich ist, einen vector innerhalb des private bereichs einer klasse zu definieren. Hier mal eine Klassendefinition von mir.

Code: Alles auswählen

#include <vector>

class cBridge
{
	private:
		double stabDifference;
		double a;
		double b;
		double y;
		double stabLenght;
		double bridgeLenght;
		vector<double> results(5);
		double increment;
		double firstPointOfBridge;
	public:
		void setIncrement(double increment);
		void setBridgeLenght(double bridgeLenght);
		double getStabLenght(void);
		cBridge(double maxValues);
		~cBridge(void);
};
Der Compiler gibt folgendes aus:

12: error: ISO C++ forbids declaration of ‘vector’ with no type
12: error: expected ‘;’ before ‘<’ token

Ich lege doch mit <double> fest das der vector vom Typ double sein soll.
Ich hab testweiße mal einen vector in meiner main deklariert, da gibts keine probleme.
Ich bin echt Ratlos :-(

Re: vector im privatebereich einer klasse

Verfasst: Mo Jan 09, 2012 8:23 am
von nufan
Die Klasse 'vector' liegt im Namespace 'std'. Das heißt du musst 'std::vector' verwenden, oder vorher 'using std::vector'' bzw. 'using namespace::std'' schreiben (hast du in main wahrscheinlich auch).
Aber auch folgendes funktioniert nicht:

Code: Alles auswählen

std::vector<double> results(5);
Du kannst hier den Konstruktor nicht aufrufen (das geht erst mit dem neuen C++-Standard). Dafür kannst du eine Initialisiererliste verwenden.

Code: Alles auswählen

std::vector<double> results;
// ...
cBridge::cBridge() : results( 5 )
{
}

Re: vector im privatebereich einer klasse

Verfasst: Mo Jan 09, 2012 2:50 pm
von gizno82
Hey Super Dani93, ich bedanke mich recht herzlich.

Grüße Gizno