[C++] Domanda sulle classi

di il
2 risposte

[C++] Domanda sulle classi


class A
{
protected:
    int x;
};

class B : public A
{
protected:
    A::x;
    int y;
};

class C  // : public A, public B     (?)
{
protected:
    B k[100];
public:
    void f()
    {
        k[0].x = 0;
        k[0].y = 0;
        return;
    }
};
Giustamente mi da "error: 'int A::x' is protected within this context"

Volevo chiedervi se è possibile in qualche modo accedere ai campi dell'array senza dover dichiarare x e y public nella classe B e senza usare friend

Grazie in anticipo.

2 Risposte

  • Re: [C++] Domanda sulle classi

    La mia soluzione (ovviamente naif, ma sono anni che ho abbandonato il C++): devi scrivere, per la classe A e la classe B, due metodi pubblici, ad esempio:
    class A
    {
    	protected:
    		int x;
     
    	public:
    		int get_x(){
    			return x;
    		}
    		void set_x(int a){
    			x = a;
    		}	
    };
    
    Il codice di C diventa:
    class C : public B     
    {
    protected:
        B k[100];
        
    public:
        void f()
        {
            k[0].set_x(0);
            k[0].set_y(0);
            return;
        }
    };
    Dovrebbe funzionare. Ovviamente, la keyword 'friend' avrebbe un po' semplificato il tutto.
  • Re: [C++] Domanda sulle classi

    Si grazie mille avevo già letto di questa opzione ma non avevo capito bene, adesso è più chiaro

    L'ho implementata sul mio codice e funziona grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte