Obiekty - mam problem :/
Ostatnio zmodyfikowano 2009-01-25 09:01
Tival Temat założony przez niniejszego użytkownika |
Obiekty - mam problem :/ » 2008-12-30 19:56:40 Witam chce się nauczyć programowania obiektowego ale jakoś tego nie rozumiem... próbuje napisać jakiś mini programik ale także nie mogę daje kod: #include <conio.h> #include <iostream> #include <string.h> using namespace std;
class mama { public: string imie = "Adam"; private: int x = 100; int y = 100; };
int main() { mama poka; cout << "Twoje imie to: " << poka.imie; getch(); return 0; }
Nie śmiać się z nazw :D Co w tym kodzie jest zle?? mam bledy przy kompilacji: 9 C: \Dev-Cpp\main.cpp ISO C++ forbids initialization of member `imie' 9 C: \Dev-Cpp\main.cpp making `imie' static 9 C: \Dev-Cpp\main.cpp invalid in-class initialization of static data member of non-integral type `std::string' 12 C: \Dev-Cpp\main.cpp ISO C++ forbids initialization of member `x' 12 C: \Dev-Cpp\main.cpp making `x' static 12 C: \Dev-Cpp\main.cpp ISO C++ forbids in-class initialization of non-const static member `x' 13 C: \Dev-Cpp\main.cpp ISO C++ forbids initialization of member `y' 13 C: \Dev-Cpp\main.cpp making `y' static 13 C: \Dev-Cpp\main.cpp ISO C++ forbids in-class initialization of non-const static member `y' C: \Dev-Cpp\main.cpp In function `int main()': 22 C: \Dev-Cpp\main.cpp 'class mama' has no member named 'imie'
C: \Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1 <--- klasyczna linijka |
|
DeBugger |
» 2008-12-30 20:49:11 Doszłem do czegoś takiego(zaraz zlikwiduję statiki): #include <conio.h> #include <iostream> #include <string> using namespace std;
class mama { public: static string imie; private: static int x; static int y; }; string mama::imie = "Adam"; int mama::x = 100; int mama::y = 100; int main() { mama poka; cout << "Twoje imie to: " << poka.imie; getch(); return 0; } |
|
DeBugger |
Zmienne klasy z użyciem konstruktora » 2008-12-30 20:53:37 #include <conio.h> #include <iostream> #include <string> using namespace std;
class mama { private: int x; int y; public: string imie; mama(); }; mama::mama() { x = 100; y = 100; imie = "Adam"; } int main() { mama poka; cout << "Twoje imie to: " << poka.imie; getch(); return 0; } Poczytaj dział o konstruktorach. |
|
DeBugger |
Wyjaśnienie » 2008-12-30 20:59:40 Dane tylko deklarujesz w ciele klasy, a możesz nadać im wartość np. w konstruktorze. |
|
GoldWolf |
» 2008-12-31 12:33:06 Tu nawet o konstruktory nie chodzi nie masz metody dla tej klasy.
Zdeklarowałeś klasę ale brak jej metod. Konstruktory sobie na razie zostaw, musisz nauczyć się poprawnie tworzyć klasę i metody dla tej klasy.
|
|
DejaVu |
» 2008-12-31 12:41:48 Siłą rzeczy tworzenie konstruktorów w klasach powinno być na porządku dziennym. Prawdopodobieństwo, że w klasie nie będzie zmiennych lub nie będą musiały być zainicjowane w celu prawidłowego funkcjonowania klasy jest bliskie zeru :) Tak więc konstruktory są nieodłączną częścią nauki programowania obiektowego. |
|
GoldWolf |
» 2008-12-31 17:40:08 Zgodzę się z tobą całkowicie ale kompilator tworzy konstruktory domyślne i jeżeli ktoś (tak jak ja) nie opanował jeszcze klasy to nie musi na razie się nimi przejmować. Konstruktory, a co za tym idzie i destruktory, o nie na razie zadba kompilator.
Ja bym zaczął najpierw od próby tworzenia klas i metod by zrozumieć jak to się je. Na konstruktory przyjdzie czas, sam ich jeszcze nie używam. Nie muszą Ci na razie śmietnika z głowy robić, chociaż jak je dobrze poznasz to na pewno staną się bardzo użyteczne. |
|
GoldWolf |
» 2009-01-24 19:07:18 Przykro mi, że tak późno ale mogło by to tak wyglądać:
#include <conio.h> #include <iostream> #include <string> using namespace std;
class mama { int x, y; public: void inicjuj(); };
void mama::inicjuj() { x = 100; y = 100; string imie = "Adam"; cout << " Twoje imie to " << imie << endl; }; int main() { mama test; test.inicjuj(); system( "pause" ); }
|
|
« 1 » 2 |