Pregunta

Estoy tratando de lidiar con friend class por primera vez. Escribí el código a continuación:

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;

};

El compilador me dice que no puedo hacer root.x=3;, ¿¿Cuál es el problema??

¿Fue útil?

Solución

El problema es que está tratando de ejecutar una declaración en un lugar donde el compilador espera declaraciones de miembros. Intenta ponerlo en un método

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

Otros consejos

No puede hacer la tarea como parte de la declaración de clase. Hazlo en una función de miembro en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top