http://ideone.com/N9wEXh
Wersja do druku
dzięki!!! jedną rzecz załatwiłeś a w ogóle czemu nie powinienem był użyć funkcji itoa do konwersji do stringa?? myślałem że to najlepszy sposób
a drugim problemem było to że getchar zasysał znak nowej linii i wciągał go jakoś dziwnie do tablicy już chyba działa dałem jeden getchar() w mainie xD
Segmentation_fault
chuj kurwa odpuszczam xD
e: już działa dzięks
@Gracjan Prastacki ;
Tego się używa wszędzie, przykładowo w banku
i potem robiszKod:class Account {
private int account_number;
private int pin_number;
private double amount;
//Konstruktor do stworzenia nowego konta
public Account (int acc_n, int pin_n, double am){
account_number = acc_n;
pin_number = pin_n;
amount = am;
}
// Metoda, która pokazuje stan konta
public void showAmount(){
Console.WriteLine(amount)
}}
Pisane na szybko przeze mnie - laika, także w razie błędów mnie poprawcie.Kod:Account acc1 = new Account(1278312, 4444, 1000000) // Tworzysz konto o numerze konta 1278312, pinie 4444 i o saldzie miliona zł
acc1.showAmount(); // Wywołujesz metodę klasy Account dla obiektu acc1, która pokaże ile na koncie ma acc1
@up
Daję soga już trochę rozumiem
P.S można używać tylko tych metod na które pozwala dołączona biblioteka, tak?
Metody tworzysz sam, na przykład dla obiektu Kot klasy Zwierze możesz zrobić metodę dajGłos, która będzie wypisywała dźwięk jaki wydaje np. "Miau" dla kota.
Może być również metoda sprawdźWiek dla obiektu Marcin w klasie Osoba, która będzie wyglądała mniej więcej tak
I za pomocą tej metody (którą stworzyłeś sam), możesz sprawdzać czy dana osoba jest pełnoletnia.Kod:void sprawdźWiek(){
if (wiek < 18) {
Console.WriteLine("Jestes niepelnoletni!");
else{
Console.WriteLine("Jestes pelnoletni!");
}
}
}
Są oczywiście wbudowane metody w biblioteki, ale wtedy używasz już określonej metody klasy z biblioteki. Na przykład masz jakąś bibliotekę o nazwie Date i w niej masz metodę showDate(), której możesz używać po dołączeniu biblioteki Date.
Chodziło mi konkretnie o getline() do tego nie trzeba tworzyć klasy.
Mam klase Gracz i klase Obiekt. W klasie Obiekt mam strukture obiekty, i vector, w ktory wrzucam te struktury i sluzy mi jako lista. W klasie Gracz chciałem zrobić funkcje, która sprawdzała by kolizje między graczem a strukturami znajdującymi się w vectorze.
Jak najlepiej przekazać liste z przedmiotami (vector) z klasy Obiekt do klasy Gracz?
Drugie pytanie. Wrzuciłem te liste w nową klase i chciałem żeby klasy Obiekt i Gracz ją dziedziczyły. Listy się różnią, bo obie klasy mają swoje kopie na których pracują. Jak sprawić aby pracowały one na oryginalnych danych z nowej klasy?
Ja bym nie zagnieżdżał struktury obiekty w klasie Obiekt. Bo jeżeli będzie zagnieżdżona to w innych klasach nie będzie wiadomo co to jest za typ. Zrób ją normalnie tak jak te dwie klasy a nie wewnątrz jednej z klas.
W mainie masz 2 instancje tych klas:
Gracz nowy_gracz;
Obiekt nowy_obiekt;
To w klasie gracz tworzysz metodę która jako parametr przyjmuje vector typu obiekty albo referencje do niej.
no i wywołujesz tą metodę w taki sposób:
nowy_gracz.metoda(std::vector<obiekty> tablica);
No i masz dostęp w tej mtodzie do całego tego pojemnika. Jeżeli chcesz mieć tą tablicę jako prywatną to musisz albo zaprzyjaźnienie zrobić albo gettery zrobić.
Wydaje mi się że masz problem z tworzeniem zależności między klasami (ja w sumie też). Musisz przemyśleć schemat klas i powiązań między nimi zanim zaczniesz je pisać. Zwykle pomagają proste pytania: jeżeli masz dwie klasy to pytasz się czy jedna jest jakimś rodzajem drugiej. Jeżeli jest to po sobie dziedziczą. Np klasa samochód dziedziczy po klasie pojazd bo samochód jest pojazdem. Wiadomo że dziedziczenia nie tylko wtedy się używa (np tworzenie wspólnego interfejsu) ale zwłaszcza na początku warto myśleć w ten sposób. Drugie pytanie to czy jedna klasa zawiera drugą klasę. Przykładowo klasy radio i antenka. Tu nie będzie dziedziczenia tu będzie zawieranie. Więc klasa radio składa się między innymi z obiektu klasy antenka.Cytuj:
Drugie pytanie. Wrzuciłem te liste w nową klase i chciałem żeby klasy Obiekt i Gracz ją dziedziczyły. Listy się różnią, bo obie klasy mają swoje kopie na których pracują. Jak sprawić aby pracowały one na oryginalnych danych z nowej klasy?
class radio
{
antenka nowa_antenka;
}
Wydaje mi się że powinieneś jeszcze raz przemyśleć schemat klas w programie. Używając dziedziczenia chciałeś aby te klasy pracowały na tym samym obiekcie. To jest raczej złe rozwiązanie. Powinno się unikać dużej ilości zależności między klasami. Klasa Obiekt powinna mieć metodę która zwraca vector lub wskaźnik na niego z elementami a klasa Gracz powinna mieć metodę która taki vector przyjmuje.
Ja sam się uczę dopiero programować więc w tym co napisałem może być sporo błędów. Więc bardziej Cię zachęcam do książek. Jeżeli masz dobrze opanowane podstawy klas to jakąś książkę o wzorcach projektowych tam o relacjach między klasami jest bardzo dużo.
@edit
coś takiego:
To zadziała w prostym przypadku. Jednak i tak możliwe że zaburzona jest tutaj struktura klas. Bo czy to gracz powinien sprawdzać czy doszło do kolizji? Czy może mechanizm gry? Funkcjami gracza powinny być chodzenie, strzelanie, podawanie swojego imienia itp. A czy doszło do kolizji to może powinna sprawdzać inna funkcja przyjmująca jako parametry obiekt gracza i tablicę obiektów. Albo cała klasa do tego stworzona. Nie lepiej by tak było? W prostym przypadku sprawdzanie tego w klasie gracza będzie działało jednak jak ta klasa będzie rozbudowywana to się będzie można pogubić w metodach.Kod:#include <vector>
struct obiekty
{
};
class Obiekt
{
public:
std::vector < obiekty > lista_obiektow;
};
class Gracz
{
public:
void kolizja(std::vector < obiekty > &lista)
{
//sprawdzenie_kolizji();
}
};
int main()
{
Obiekt nowy_obiekt;
Gracz nowy_gracz;
nowy_gracz.kolizja(nowy_obiekt.lista_obiektow);
return 0;
}
:DCytuj:
W restauracji:
- Kernel!
o kurwa na prawde xD
Anyway do takich tekstow http://torg.pl/showthread.php?458515....Torgdevs.Bash
czym się różni pętla do..while od samego while w cpp i którego się zazwyczaj używa?