C++ modyfikacja oryginalnego obiektu
Ostatnio zmodyfikowano 2017-01-30 16:47
KingLemon Temat założony przez niniejszego użytkownika |
C++ modyfikacja oryginalnego obiektu » 2017-01-30 16:36:43 Witam, robię program, w którym implementuję klasę gear czyli koło zębate i moim celem jest "połączenie" kilku gearów a potem kiedy poruszam jednym, to te połączone z nim też się poruszą, tylko w odwrotnym kierunku. oto klasa gear: #ifndef GEAR_H_INCLUDED #define GEAR_H_INCLUDED
#include <iostream> #include <vector>
using std::vector; using namespace std;
class gear { public: gear(); ~gear(); vector < gear > wek; int kat; void obrot( int kat_temp ); void wyswietl(); void polacz( gear & a2 ); };
#endif
implementacja metod: #include <iostream> #include <vector> #include "gear.h"
using std::vector; using namespace std;
gear::gear() { kat = 0; }
gear::~gear() { }
void gear::polacz( gear & a2 ) { wek.push_back( a2 ); }
void gear::obrot( int kat_temp ) { int e = wek.size(); this->kat = this->kat + kat_temp; if( e == 0 ) { cout << "znajduje 0 polaczonych elemele" << endl; } if( e == 1 ) { cout << "znajduje 1 polaczony elemele" << endl; } for( int i = 0; i < wek.size(); i++ ) { cout << "uruchomienie petli " << endl; gear & b = wek[ i ]; cout << "przed" << "\n" << b.kat << endl; b.kat = b.kat - kat_temp; cout << "po" << "\n" << b.kat << endl; } }
void gear::wyswietl() { cout << kat << endl; }
funkcja main : #include <iostream> #include <vector> #include "gear.h" using std::vector; using namespace std;
int main() { gear a1; gear a2; a1.wyswietl(); a2.wyswietl(); a1.polacz( a2 ); a1.obrot( 100 ); cout << "A1:" << endl; a1.wyswietl(); cout << "A2:" << endl; a2.wyswietl(); return 0; }
Oczywiście chciałbym, żeby kąt obiektu a2 przy drugim wyświetleniu był równy -100. Na pewno mam problem z referencjami, i nie wiem czy użycie vectora też jest odpowiednim krokiem. Dodam, że nie jestem zaawansowanym programistą :) |
|
carlosmay |
» 2017-01-30 16:46:53 Jedno co przychodzi mi do głowy to klasa implementująca koło zębate oraz klasa implementująca mechanizm kół zębatych. Teraz można w klasie mechanizmu poruszać wszystkimi kołami dodanymi do mechanizmu. using namespace std; w pliku nagłówkowym to zła praktyka. |
|
Gibas11 |
» 2017-01-30 16:47:08 Trzymaj w wektorze std::reference_wrapper < gear > , teraz operujesz na kopiach. |
|
« 1 » |