Dziedziczenie - funkcje static

0

Witam. Problem mam nastepujący i jestem pewien, że winna jest jakaś pierdoła. Zaczynam dopiero przygodę z obiekowym programowaniem, sta problem jest tak banalny. Oto kod:

class Punkt{

protected:
	float x,y;
	Punkt(float a, float b) : x(a), y(b){
}
	
	
};

class Metody : public Punkt{
public:	

	 Metody();
	 static void print();
	 static void przesun();
	 static void skaluj();
};

void Metody::print(){

	cout << x;
};
 

Wywala mi error nastepujący : error C2597: illegal reference to non-static member 'Punkt::x'

Czemu nie moge sie odwołać do x? Byłbym wdzięczny za pomoc, bo rozwiązanie tego sporo by mi ułatwiło.

1

statyczne metody mają dostęp tylko do statycznych składowych.
x nie jest statyczną składową.

0

Problem to jest cały ten kod. Jeden wielki WTF. Czemu metody "są szczególnym przypadkiem Punktu"? WTF? Od kiedy? Sam błąd kompilacji mówi tyle że metoda statyczna nie może odwolywać się do PÓL OBIEKTÓW bo metoda statyczna może być wywołana BEZ OBIEKTU. Metoda statyczna to metoda wołana na rzecz klasy a nie konkretnego obiektu.

0

Hmm...klasa "Metody" po prostu zawiera metody umożliwiające takie, a takie operacje na obiektach klasy Punkt. Wydaje mi się, że nie ma w tym nic złego. Ale ok, dziekuje za podpowiedzi.

0

@formel4 masz rację. Wydaje ci się. Jest to totalnie bez sensu. Czemu te metody nie są w klasie Punkt po prostu? Dziedziczenia nie stosuje sie "na pałe". W ogóle nie należy go nadużywać i stosować tylko jeśli poważnie jest taka potrzeba...

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