Obiekt składnikiem klasy

Obiekt składnikiem klasy
KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

Cześć,

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

Kopiuj
class A
    {
    public:
        int x;
        int y;

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

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

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

Tworze obiekt klasy A:

Kopiuj
 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" ??

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
B(const A &a): obiekt_klasy_A(a){}
KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

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

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
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ę

Kopiuj
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)

Kopiuj
 w której wewnątrz wykonujesz metodę setCoordinates
KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
0

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

np.:

Kopiuj
class A
{
   int x;
}; 

class B
{
   A obiekt;
};

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

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

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
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.

Kopiuj
 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.

Kopiuj
 
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.

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.