Mistre
22-06-2007, 10:16
Ciao a tutti!!
stavo appunto leggendo un libro e facendo delle prove ma non riesco a capire una cosa, ho questa implementazione di lista:
class ilist_item;
class ilist
{
public:
ilist() : _at_front(0), _at_end(0), _size(0) {}
void concat( const ilist &il );
private:
ilist_item *_at_front;
ilist_item *_at_end;
int _size;
};
e la class ilis_item e' cosi' fatta:
class ilist_item
{
public:
ilist_item( int value, ilist_item *item_to_link = 0 );
void next( ilist_item *link ){ _next = link; }
ilist_item* next(){ return _next; }
int value(){ return _value; }
private:
int _value;
ilist_item *_next;
};
l'implementazione di concat e' la seguente:
void ilist::concat( const ilist &il )
{
ilist_item *ptr = il._at_front;
while( ptr )
{
insert_end( ptr->value() );
ptr = ptr->next();
}
}
gli passa un riferimento costante di tipo ilist che si chiama il. Dentro il corpo della funzione la prima istruzione e': ilist_item *ptr = il._at_front ma _at_front non e' un campo privato???
come posso accederci in questo modo?
stavo appunto leggendo un libro e facendo delle prove ma non riesco a capire una cosa, ho questa implementazione di lista:
class ilist_item;
class ilist
{
public:
ilist() : _at_front(0), _at_end(0), _size(0) {}
void concat( const ilist &il );
private:
ilist_item *_at_front;
ilist_item *_at_end;
int _size;
};
e la class ilis_item e' cosi' fatta:
class ilist_item
{
public:
ilist_item( int value, ilist_item *item_to_link = 0 );
void next( ilist_item *link ){ _next = link; }
ilist_item* next(){ return _next; }
int value(){ return _value; }
private:
int _value;
ilist_item *_next;
};
l'implementazione di concat e' la seguente:
void ilist::concat( const ilist &il )
{
ilist_item *ptr = il._at_front;
while( ptr )
{
insert_end( ptr->value() );
ptr = ptr->next();
}
}
gli passa un riferimento costante di tipo ilist che si chiama il. Dentro il corpo della funzione la prima istruzione e': ilist_item *ptr = il._at_front ma _at_front non e' un campo privato???
come posso accederci in questo modo?