Zugriff auf Elemente der Basisklasse

little-smile

Grünschnabel
Hallo Ihr Lieben,

Ich habe folgendes Beispiel:
Code:
class GramInfo
{
	public:
		/*Constructor and Destructor*/
		GramInfo();
		GramInfo( const vector<int>::const_iterator start, const unsigned int& hash);
		virtual ~GramInfo();
		
		/*Copy Constructor*/
		GramInfo (const GramInfo& rhs);
		
		/*Overloading different operators*/
		GramInfo& operator= (const GramInfo& rhs);
		bool operator== (const GramInfo& rhs) const;
		
	
		
		/*further member functions*/
		void setGramStart(const vector<int>::const_iterator& start){GramStart = start;}
		void setHashValue(const unsigned int& hash){GramHashValue = hash;}
		
		const vector<int>::const_iterator& getGramStart()const{return GramStart;}
		const unsigned int& getGramHashValue()const{return GramHashValue;}
		
		
	private:
		vector<int>::const_iterator GramStart;
		unsigned int GramHashValue;

};

class GramTable: public vector<GramInfo>
{
	public:
	  	virtual ~GramTable(){}

  		void addGram( const vector<int>::const_iterator& start, const unsigned int& hash) 
  		{ 
    		push_back( GramInfo( start, hash ) ); 
  		}  	
				
};

Was ich nun machen will, ist durch GramTable laufen und mir die Werte ausgeben lassen. Leider funktioniert das bei nicht.
Hab es wie folgt in meiner main probiert.

Code:
GramTable gramTab;
GramTable::iterator gram_it;
			
for (gram_it = gramTab.begin(); gram_it != gramTab.end(); ++gram_it)
{
	cout << gram_it.getGramStart()<<endl ;
		
}

da bekomme ich aber folgende Fehlermeldung:
Fehler: »class __gnu_cxx::__normal_iterator<GramInfo*, std::vector<GramInfo, std::allocator<GramInfo> > >« hat kein Element namens »getGramStart«


Kann mir da vllt jemand weiterhelfen?!

Vielen Dank !
little-smile
 
Hi.

Um auf das Element auf das ein Iterator zeigt zuzugreifen, mußt du den Iterator erstmal dereferenzieren (wie bei einem Zeiger). Der Iterator selbst hat selbstverständlich keine getGramStart() Methode (wie die Fehlermeldung bereits sagte).

Gruß
 
Zurück