объявить одноклассником в другом - PullRequest
1 голос
/ 27 марта 2012

Я пытаюсь получить член в классе из другого класса: у меня есть класс блога и класс друзей и класс blog_pointer. Я попробовал код ниже:

friends :: blog_pointer *  blogFriend;

есть ли что-то вроде прототипав функции для классов?компилятор, кроме конструктора или деструктора.

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Вы можете заранее объявить или «прототипировать» классы так:

class B;

class A {
  public:
    B b;
};

class B {
  public:
    A a;
};
0 голосов
/ 27 марта 2012

Ключевое слово Friend только предоставляет доступ к закрытым данным других классов. Вы не можете объявлять дополнительных членов другого класса в классе друга.

Rectangle.h

class Rectangle {
  int width, height;
 public:
  int area ()
    {return (width * height);}
  void convert (CSquare a);
  };

Square.h

class Square {
 private:
   int side;
public:
  void set_side (int a)
     {side=a;}
friend class Rectangle;
};

Rectangle.cc

void Rectangle::convert (Square a) {
width = a.side;
height = a.side;
}

main.cc

int main () {
 Square sqr;
 Rectangle rect;
 sqr.set_side(4);
 rect.convert(sqr);

}

без ключевого слова friend вы можете получить доступ к a.side в методе convert.

Но я не совсем уверен, что вы спрашиваете? Если вы просто хотите использовать другой класс, вы можете сделать следующее.

NextSquare.h

class NextSquare {
 private:
   int side;
public:
  void set_side (int a)
     {side=a;}
friend class Rectangle;
class Rectangle* aRecInASquare;
};

Теперь вы можете получить доступ к данным Rectangle в NextSquare

...