vector im privatebereich einer klasse

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

vector im privatebereich einer klasse

Beitrag von gizno82 » Mo Jan 09, 2012 5:48 am

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 :-(

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: vector im privatebereich einer klasse

Beitrag von nufan » Mo Jan 09, 2012 8:23 am

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 )
{
}

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: vector im privatebereich einer klasse

Beitrag von gizno82 » Mo Jan 09, 2012 2:50 pm

Hey Super Dani93, ich bedanke mich recht herzlich.

Grüße Gizno

Antworten