Obiekt składnikiem klasy

0

Cześć,

Jezeli mam klase A która wygląda tak:

class A
    {
    public:
        int x;
        int y;

        a(int x, int y): x(x), y(y) {}
    }; 

i klasę B która wygląda tak:

 class B
    {
    public:
        int w;
        A obiekt_klasy_A;
    };

Tworze obiekt klasy A:

 A jakis_obiekt(0,0);

I teraz pytanie, czy da się za pomoca konstruktora klasy B przesłac obiekt "jakis_obiekt" i przypisać wszytskie jego wartości do obiektu "obiekt_klasy_A" ??

1
B(const A &a): obiekt_klasy_A(a){}
0

A w jaki sposób mogę się dostać z zewnątrz klasy do składników obiektu "obiekt_klasy_A"

1

Tak jak do innych składowych
Załóżmy że klasa A to punkt,a B to koło które ma punkt środkowy,i np. klasa Point ma metodę

setCoordinates(double x,double y)

gdzie ustanawiasz współrzędne tego punktu to w kole,to w klasie Circle masz setCentralPoint(double x,double y)

 w której wewnątrz wykonujesz metodę setCoordinates
0

ok, to rozumiem, ale czy jest sposób żeby dostać się bezpośrednio do składnika obiektu w klasie, nie poprzez metodę.

np.:

class A
{
   int x;
}; 

class B
{
   A obiekt;
};

(coś tu wstawić?)obiekt.x=;

1

No, zasadniczo to po prostu obiekt->x albo this->x.

0
Patryk27 napisał(a):

No, zasadniczo to po prostu obiekt->x albo this->x.

Tak to jest tylko dla wskaźników,poza tym nie jest to troche zgodne z zasadami OOP
generalnie w programowaniu obiektowym pola (czyli np.

 double x; Point p; 

) powinny być "prywatne" tzn tylko obiekt danej klasy powinien mieć dostęp do tego pola,a reszta powinna mieć dostęp poprzez odpowiednie metody np.

 
Class Point{
private:
      double x,y;
public:
      Point();
      Point(double x,double y);
      void setX(double x);
      void setY(double y);
      double getX();
      double getY();
};

i np.

void Point::setX(double x){
    this->x=x;
}
double Point::getX(){
      return x;
}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1