C++ Auf Vektor Elemente zugreiffen

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
212
Hallo Leute,

ich hatte folgenden Code geschrieben, womit ich bei den Vektoren nicht mehr weiter komme:
Der Header
Code:
#ifndef _Stockwerk_h_
   #define _Stockwerk_h_

#include <iostream>
#include <vector>
#include <windows.h>

class Stockwerk
{

public:
	Stockwerk();
	virtual ~Stockwerk();
	int* pruefeSensoren();

private:
	int etagenZahl;
	Sensor *m_sensor;
	std::vector<Sensor *> StockwerkErreicht;
    std::vector<Sensor *> oberhalbStockwerk;
	std::vector<Sensor *> unterhalbStockwerk;
	Sensor *Ruftouchpad;

};
#endif

Die Cpp-Datei
Code:
/******************************************************************************
* Name: Stockwerk.cpp
******************************************************************************/

#include "Stockwerk.h"
/******************************************************************************
* Beschreibung: Ermittelt den aktuellen Stockwekr
******************************************************************************/
int* Stockwerk::pruefeSensoren(){
	while(true){
		for(int x=0; x<StockwerkErreicht.size(); x++){
			if(StockwerkErreicht.at(x) == true){
				this->setAnzeigeStockwerk(x-1);
			}
		}
	}
	return 0;
}

Mit den folgenden 2 Fehlermeldungen komme ich nicht weiter. Beide beziehen sich auf die if-Bedingung auf zeile 12:
Fehler 3 error C2446: '==': Keine Konvertierung von 'int' in 'Sensor *'
Fehler 4 error C2040: '==': 'Sensor *' unterscheidet sich von 'int' in Bezug auf die Anzahl vorgenommener Dereferenzierungen 39

Der Rückgabewert von StockwerkErreicht ist Boolean.
Wie kann man auf die einzelnen Elemente eines Vektors zugreifen?

Ich hoffe ihr könnt mir helfen.

Lg Tron36
 
Zuletzt bearbeitet:
StockwerkErreicht ist ein vector, dessen Elemente Zeiger auf Sensor-Objekte sind. Ich sehe übrigens nicht, daß du irgend wo den Typ Sensor deklarierst / definierst. Ändere das und prüfe in deinem if-conditional nicht auf true sondern auf null oder nicht null. Also so:

Code:
	if(StockwerkErreicht.at(x)){
            this->setAnzeigeStockwerk(x-1);
        }
Ergänzung ()

Und warum hat deine pruefeSensoren-Methode als Rückgabetyp einen int-Pointer? Du gibst ja eh immer nur einen null-Pointer zurück. Warum nimmst du nicht einfach void als Rückgabetyp?
Ergänzung ()

Und wie soll eigentlich die Endlosschleife in deiner pruefeSensoren-Methode jemals wieder verlassen werden??
 
Hi,
Sensor ist als Klasse, als solches vorhanden. Ich habs nicht reingetan, da der Thread dann zu groß sein würde.
mit dem Null pionter hab ich ebend bemerkt. :)
pruefeSensoren soll ja ständig überprüftwwerden.

lg Padawan
 
Zuletzt bearbeitet:
Zurück
Oben