04/01/12 10:55
Neo25
Salve ragazzi. Come dice il titolo ho un problema riguardo all'accesso di attributi di un oggetto.
Io ho una classe base con attributi protected appunto per poterli ereditare. Nel main dichiaro una array di oggeti di questa classe.
Quando creo la classe derivata in modo public ho tutti i metodi e attributi a disposizione. In un metodo di questa classe derivata gli passo anche l'array di oggetti della classe. Il problema è che non riesco ad accedere agli attributi di quello oggetto.
Questo è il codice:
Il compilatore diche che non posso perchè sono protected...e quindi dovrei metterli publc. Ma non posso permettere che quegli attributi siano pubblici ma devo trovare un modo di potergli accedere dalla classe derivata.
Sperdo di essere stato chiaro.
Grazie in anticipo.
Io ho una classe base con attributi protected appunto per poterli ereditare. Nel main dichiaro una array di oggeti di questa classe.
Quando creo la classe derivata in modo public ho tutti i metodi e attributi a disposizione. In un metodo di questa classe derivata gli passo anche l'array di oggetti della classe. Il problema è che non riesco ad accedere agli attributi di quello oggetto.
Questo è il codice:
class Assembly_line //classe base { protected: vector <Station> station; //attributi classe base int time_line_entry; int time_line_exit; int n_station; vector <int> f; vector <int> l; public: Assembly_line() { time_line_entry=0; time_line_exit=0; n_station=0; } void build_assembly_line(int time1,int time2,int n) { time_line_entry=time1; time_line_exit=time2; n_station=n; } ~Assembly_line(){} }; class Function_Assembly_line:public Assembly_line{ //classe derivata public: Function_Assembly_line(){ } void fastest_way(int x,vector <Assembly_line> line){ line[x].n_station=1; // QUI C'E' il problema: } // perchè non posso accedere a //quell' attributo ? }; int main(int argc, char *argv[]){ vector <Assembly_line> line; //Array di oggetti classe base Function_Assembly_line l; // Oggetto classe derivata srand((unsigned int)time(0)); for(int i=1;i<=x;i++){ int a,b; a=1+rand()%30; b=1+rand()%30; line[i].build_assembly_line(a,b,s); } l.fastest_way(x,line); //Chiamata metodo in cui ho il problema // system("pause"); // come vedete gli passo l'array di oggetti return 0; }
Il compilatore diche che non posso perchè sono protected...e quindi dovrei metterli publc. Ma non posso permettere che quegli attributi siano pubblici ma devo trovare un modo di potergli accedere dalla classe derivata.
Sperdo di essere stato chiaro.
Grazie in anticipo.
aaa