problem z klasami w oddzielnych plikach
Ostatnio zmodyfikowano 2012-05-22 09:43
AbdulAbdul Temat założony przez niniejszego użytkownika |
problem z klasami w oddzielnych plikach » 2012-05-20 20:49:37 Problem jest trochę dziwny bo gdy program umieszcze w jednym pliku (main.cpp) to wszystko działa, natomiast jeśli go podzielę na oddzielne pliki *.h (dla klas) i plik główny main.cpp to wyskakuje mi błąd: 1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall samochod::samochod(void)" (??0samochod@@QAE@XZ) referenced in function "public: __thiscall samochod_osobowy::samochod_osobowy(int,int)" (??0samochod_osobowy@@QAE@HH@Z) oraz 1>D:\Programowanie\Programy C++\dziedziczenie Uryga Bartosz\Debug\dziedziczenie Uryga Bartosz.exe : fatal error LNK1120: 1 unresolved externals Zamieszczam kody
#include <iostream> #include "pojazd.h" #include "samochod.h" #include "samochod osobowy.h" #include "samochod ciezarowy.h"
using namespace std;
int main() { pojazd unicykl( 1, 5 ); unicykl.przedstaw_sie(); pojazd bicykl( 2, 14 ); bicykl.przedstaw_sie(); samochod_osobowy sedan( 200, 5 ); sedan.przedstaw_sie(); samochod_ciezarowy jelcz( 1000 ); jelcz.przedstaw_sie(); system( "pause" ); return 0; }
#pragma once
using namespace std;
class pojazd { private: int ilosc_kol, waga; public: pojazd(); pojazd( int ILOSC_KOL, int WAGA ) { ilosc_kol = ILOSC_KOL; waga = WAGA; cout << "Stworzono obiekt!\n"; } ~pojazd() { cout << "Usunieto obiekt!\n"; } void przedstaw_sie() { cout << "moja ilosc kol= " << ilosc_kol << endl; cout << "moja waga= " << waga << endl; } };
#pragma once
using namespace std;
class samochod : public pojazd { protected: int obciazenie, liczba_pas; public: samochod(); samochod( int OBCIAZENIE, int LICZBA_PAS ) : obciazenie( OBCIAZENIE ) , liczba_pas( LICZBA_PAS ) { } void przedstaw_sie() { cout << "moje obciazenie= " << obciazenie << endl; cout << "moja liczba pasazerow= " << liczba_pas << endl; } };
#pragma once
using namespace std;
class samochod_osobowy : protected samochod { public: samochod_osobowy( int OBCIAZENIE, int LICZBA_PAS ) { obciazenie = OBCIAZENIE; liczba_pas = LICZBA_PAS; cout << "Stworzono obiekt!\n"; } void przedstaw_sie() { cout << "moje obciazenie= " << obciazenie << endl; cout << "moja liczba pasazerow= " << liczba_pas << endl; } };
#pragma once
using namespace std;
class samochod_ciezarowy : private samochod { private: int ladownosc; public: samochod_ciezarowy( int LADOWNOSC ) { ladownosc = LADOWNOSC; cout << "Stworzono obiekt!\n"; } void przedstaw_sie() { cout << "moja ladownosc= " << ladownosc << endl; } };
Z góry dzięki za pomoc, P.S znacie jakiś dobry darmowy kurs do tworzenia aplikacji okienkowych w Visual Studio 2008? |
|
Admixior |
» 2012-05-21 15:38:16 Problem: W konstruktorze klasy samochod_osobowy(...) masz wywołanie konstruktora domyślnego z klasy samochód. Tę funkcję masz tylko zdeklarowaną, bez definicji. Roziwązanie: W liście inicjalizacyjnej musisz dać wywołanie konstruktora klasy tej którą dziedziczysz. Tylko ten konstruktor musi mieć odpowiednie parametry(taki który ma definicje). Jak będziesz jeszcze coś chciał to pisz za niedługo będę.:) NP: samochod_osobowy( int OBCIAZENIE, int LICZBA_PAS ) : samochod( 2, 2 ) i tak do każdej klasy tzn samochód, samochód ciężarowy i samochod_osobowy. |
|
AbdulAbdul Temat założony przez niniejszego użytkownika |
» 2012-05-22 09:43:10 Dzięki za odpowiedź i pomoc ;) |
|
« 1 » |