класс друг не хорошо со мной? - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь разобраться с friend class в первый раз. Я написал код ниже:

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;

};

Компилятор говорит мне, что я не могу сделать root.x=3;, В чем проблема ??

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Проблема в том, что вы пытаетесь выполнить оператор в месте, где компилятор ожидает объявления членов.Попробуйте поместить это в метод

class Type : public Kind {
  ...
  void Example() {
    Kind root;
    root.x = 3;
  }
};
1 голос
/ 11 января 2012

Вы не можете выполнять присваивание как часть объявления класса. Вместо этого сделайте это в функции-члене.

...