Klein vraagje welke ik stel in de context van mijn implementatie, met wellicht wat irrelevante info.
Ik heb een template based class ontwikkeld genaamd 'collection' die onder andere een attribute 'count' bezit om aan te geven hoeveel items er in opgeslagen zijn. Deze class is abstract en bevat een virtual method 'insert', die een item toevoegd van een willekeurig type:
Nu maak een derived class 'list' welke aan het abstracte type 'collection' voldoet. Deze list implementeert zijn eigen insert en verhoogt daarin 'count'. Nu kan ik voor 'count' echter enkel 'this->count' gebruiken en niet gewoon 'count'. In veel voorbeelden op internet zie ik dat dit wel zou moeten kunnen:
Mijn g++ compiler herkent de hele count niet. Indien ik er 'this->' voor plaats is er niets aan de hand.
Heeft iemand enig idee of dit normaal gedrag is en wat het achterliggende idee hierbij is?
Ik heb een template based class ontwikkeld genaamd 'collection' die onder andere een attribute 'count' bezit om aan te geven hoeveel items er in opgeslagen zijn. Deze class is abstract en bevat een virtual method 'insert', die een item toevoegd van een willekeurig type:
C++:
1
2
3
4
5
6
7
8
| template <class Data> class collection { protected: int count; public: virtual void insert (Data *data) = 0; } |
Nu maak een derived class 'list' welke aan het abstracte type 'collection' voldoet. Deze list implementeert zijn eigen insert en verhoogt daarin 'count'. Nu kan ik voor 'count' echter enkel 'this->count' gebruiken en niet gewoon 'count'. In veel voorbeelden op internet zie ik dat dit wel zou moeten kunnen:
C++:
1
2
3
4
5
6
7
8
9
10
11
| template <class Data> class list : public list { public: void insert (Data *data) { prop_ergens_in_list(data); this->count++; // werkt count++; // werkt niet } } |
Mijn g++ compiler herkent de hele count niet. Indien ik er 'this->' voor plaats is er niets aan de hand.
code:
Een van de voorbeelden op http://www.cplusplus.com/doc/tutorial/tut4-3.html doen mij vermoeden dat het ook anders kan.1
2
| list.cc: In member function `void list<Data>::insert(Data*)': list.cc:147: error: `count' undeclared (first use this function) |
Heeft iemand enig idee of dit normaal gedrag is en wat het achterliggende idee hierbij is?