LyanVu Opublikowano 8 Marca 2014 Udostępnij Opublikowano 8 Marca 2014 Otóż najpierw pokażę wam kod: consoler.h : #include <string> const int cmax_Strony = 500; class Ksiazka { private: string m_strTytul; string m_strStrony[cmax_Strony]; int m_nIloscStron; public: Ksiazka(string strTytul, int nIloscStron) { m_strTytul = strTytul; m_nIloscStron = nIloscStron; } Ksiazka() { m_strStrony[0] = "Eloszka.", m_strStrony[1] = " blablablabla"; } string GetTytul() { return m_strTytul; } string GetStrona(int nStrona) { return m_strStrony[nStrona]; } int GetIloscStron() { return m_nIloscStron; } }; main.cpp : #include <iostream> #include <conio.h> #include <cstdlib> #include <string> #include "consoler.h" using namespace std; int main() { string strTytul; int nIloscStron; int nWpisStrona = true; cout << "Podaj Tytul Ksiazki: "; cin >> strTytul; cout << endl << "Podaj Ilosc Stron: "; cin >> nIloscStron; system("cls"); Ksiazka oKsiazka1(strTytul, nIloscStron); while (nWpisStrona>0 && nWpisStrona<3) { cout << "Tytul Twojej Ksiazki: " << oKsiazka1.GetTytul(); cout << endl; cout << "Ilosc jej stron: " << oKsiazka1.GetIloscStron(); cout << endl; cout << "Podaj Strone, ktora chcesz przeczytac: "; cin >> nWpisStrona; cout << endl; cout << oKsiazka1.GetStrona(nWpisStrona - 1); cout << endl; _getch(); } _getch(); } Problem polega na tym, iż nie wyswietla mi zadnej z dwóch opisanych przeze mnie stron czyli "eloszka" i "blablabla". Wie Ktos o co chodzi? Dodam iż programowania obiektowego zacząłem się uczyć dopiero 1-2 godz temu, więc bez dziwienia jeżeli jest to trochę nagmatwane ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
jabools Opublikowano 8 Marca 2014 Udostępnij Opublikowano 8 Marca 2014 Nie sprawdzałem działania tego kodu, ale na pierwszy rzut oka widać, że masz przeciążenia konstruktora: jeden z dwoma argumentami przypisujący wartości polom Tytuł i Ilość stron, a drugi bez argumentów przypisujący dwóm pierwszym stronom wartości. Obiekt tworzysz z przeciążenia z argumentami, automatycznie nie masz nic przypisywane do dwóch wspomnianych wyżej zmiennych, bo to przeciążenie tego nie wykonuje. Nic dziwnego zatem, że nic Ci nie zwraca/wyświetla. Ogólnie, dziwny ten kod trochę, wg. mnie. Jeżeli dopiero uczysz się obiektowego, to zacznij sobie od najprostszych operacji na tych obiektach, żeby dobrze ogarnąć co i jak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 8 Marca 2014 Udostępnij Opublikowano 8 Marca 2014 Połącz kod konstruktorów, ewentualnie skopiuj kod drugiego konstruktora na koniec pierwszego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LyanVu Opublikowano 8 Marca 2014 Autor Udostępnij Opublikowano 8 Marca 2014 Dobra już działa, przerzuciłem przypisanie tych stringów(eloszka) do wyższego konstruktora. Widocznie źle zrozumiałem przeciążenia, lub w ogóle ich nie rozumiem. Myślałem, że to będzie działało na zasadzie najpierw wykona pierwszy konstruktor, pozniej zajmie się drugim ;p. W każdym razie dziękuję za pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Marca 2014 Udostępnij Opublikowano 8 Marca 2014 po czesci dobrze myslales - to zadziala tylko z konstruktorami bez parametrow, te z parametrami trzeba explicite wywolac w konstruktorze klasy dziedziczacej: class A { A(int v) { value = v; } int value; }; class B : public A { B() { A(10); } }; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 9 Marca 2014 Udostępnij Opublikowano 9 Marca 2014 po czesci dobrze myslales - to zadziala tylko z konstruktorami bez parametrow, te z parametrami trzeba explicite wywolac w konstruktorze klasy dziedziczacej: class A { A(int v) { value = v; } int value; }; class B : public A { B() { A(10); } }; O Borze... :) class A { A(int v) { value = v; } int value; }; class B : public A { B() : A(10) { } }; Twój kod YXE tworzy nową instancję klasy A, sorry bro. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 9 Marca 2014 Udostępnij Opublikowano 9 Marca 2014 pardon, masz racje - wywolanie konstruktora rodzica powinno znalezc sie w liscie inicjalizacyjnej :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się