Dziedziczenie, przypisanie wartości.

0

Cześć!
Mam mały problem, który napotkałem przy dziedziczeniu klas.

class Wektor2D{
protected:
  double Wektor[2];

public:
  Wektor2D();
class Robot:public Wektor2D{
  Wektor2D Cialo[4];

public:


  Robot();
};

Robot::Robot(){
  Wektor[0]=0;
  Wektor[1]=0;

  !!!!!!!!!!! Cialo[0][0]=0; !!!!!!!!!!

Stworzyłem klasy ukazane wyżej, jednak mam problem, gdy w konstruktorze klasy Robot chcę zmiennej "Cialo" przypisać wartość. Z tego co wyczytałem muszę dokonać przeciążenie operatora [] dla klasy Wektor2D? Próbowałem je tworzyć jednak nie do końca mi to wychodziło. Czy może ktoś pomóc rozwiązać problem.

0

A czemu tak, a nie std::vector<std::vector<cośtam>>?

0
kmph napisał(a):

A czemu tak, a nie std::vector<std::vector<cośtam>>?

Nie rozumiem za bardzo tego zapisu.

0
NootYet napisał(a):
kmph napisał(a):

A czemu tak, a nie std::vector<std::vector<cośtam>>?

Nie rozumiem za bardzo tego zapisu.

W takim razie, przykro mi, ale poczytaj tutoriale traktujące o kontenerach w C++, zanim zabierzesz się za to, co chcesz zrobić.

Poważnie. Nie możesz wybudować drugiego piętra, póki nie postawisz pierwszego. Jeśli nie rozumiesz podstaw, to nie ma sensu brać się za bardziej zaawansowane rzeczy.

2

Nie rozumiesz idei dziedziczenia albo zabrałeś się za pisanie własnej aplikacji metodą losowego naciskania klawiszy na klawiaturze, zamiast poczytać poradnik/dokumentację do końca - człowiek jest ręką, czy ma rękę?

Ty twierdzisz (w kodzie), że robot jest wektorem (dziedziczy po nim), a nie że zawiera wektor.

0

Racja nie ma to sensu. Przerobie to jednak, na przyszłość, jak rozwiązać problem z tym przypisaniem?

0

Zacznijmy od tego, że Twój kod nie ma żadnego sensu, więc nie widzę celu w rozpatrywaniu tej abstrakcyjnej sytuacji - wrzuć coś poprawnego.

0

Zrezygnowałem z dziedziczenia i wygląda to tak. W zadaniu chodzi o to ,że robot będzie wyświetlany w układzie współrzędnych x,y. Jego wygląd będzie przedstawiany za pomocą wektorów 2D. Jeden z nich to środek, natomiast 4 pozostałe odpowiadają za "obudowę" robota. Teraz w konstruktorze robota chciałbym przypisać mu początkowe wektory, jednak trzeba do tego przeciążyć operator, czego nie potrafię zrobić.

class Wektor2D{
private:
  double Wektor[2];

public:
  Wektor2D();
};
class Robot{
  Wektor2D Cialo[4];
  Wektor2D Srodek;

public:

  Robot();
};
Robot::Robot(){
  Cialo[0][0]=0;
}
0

Dlaczego trzeba przeciążyć operator?

0

Takie rozwiązanie gdzieś przeczytałem, ale nie jestem tego pewny, dlatego napisałem tutaj, może są jakieś inne metody rozwiązania tego problemu, które możecie przedstawić.

0

Już napisałem: std::vector<std::vector<cośtam>> Ale Ty ani tego nie rozumiesz, ani nie chcesz doczytać, co to w ogóle jest

1
class Vector2D {

protected:
	float x, y;
	
public:
	Vector2D(..., ...);
	
	void setX(...);
	void setY(...);
	
	float getX();
	float getY();

}

class Robot {

protected:
	Vector2D bodyPosition;
	
public:
	void something() {
		std::cout << bodyPosition.getX() << ", " << bodyPosition.getY();
	}
	
}

Przeanalizuj sobie taki przykład :)

Oczywiście wzmianka o przeciążeniu nie jest zła, lecz po prostu zbędna na Twoim etapie (to dojdzie później).

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