Domanda

sto cercando di fare con friend class per la prima volta. Ho scritto il codice qui sotto:

class Kind{

private:
    friend class Type;
    int x;

public:
    Kind(){ x=0; }
    void setX(int X) { x =X; }
    int getX() { return x; }

    };

class  Type: public Kind {
    public:
    friend class Kind;
    Type(){ }
    Kind root;
    root.x=3;

};

Il compilatore mi dice che non posso fare root.x=3;, qual è il problema ??

È stato utile?

Soluzione

Il problema è il tentativo di eseguire un'istruzione in un luogo in cui il compilatore si aspetta dichiarazioni di membro. Prova a mettere in un metodo

class Type : public Kind {
  ...
  void Example() {
    Kind root;
    root.x = 3;
  }
};

Altri suggerimenti

Non si può fare l'assegnazione come parte della dichiarazione di classe. Farlo in una funzione membro, invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top