Forum » Programiranje » Programiranje OOP
Programiranje OOP
hurlimannxt ::
Pozdravljeni!
Imam tale naslednji program, ki mi javi napako: fatal error LNK1120: 1 unresolved externals
V main-u sem komentiral vec.
Imam tale naslednji program, ki mi javi napako: fatal error LNK1120: 1 unresolved externals
V main-u sem komentiral vec.
#include<iostream> #include<string> #include<sstream> #include<vector> using namespace std; class Datum { public: int dan; int mesec; int leto; Datum(){ this->dan=10; this->mesec=10; this->leto=1010; } Datum(int dan, int mesec, int leto){ this->dan=dan; this->mesec=mesec; this->leto=leto; } int GetDan(){ return dan; } int GetMesec(){ return mesec; } int GetLeto(){ return leto; } }; class Stroj { protected: string proizvajalec; int letnik; double cena; Datum datum; public: Stroj(){ this->proizvajalec="10_Prevzeto"; this->letnik=10; this->cena=10; this->datum.dan=10; this->datum.mesec=10; this->datum.leto=10; } Stroj(string proizvajalec, int letnik, double cena, int dan, int mesec, int leto){ this->proizvajalec=proizvajalec; this->letnik=letnik; this->cena=cena; dan=datum.dan; mesec=datum.mesec; leto=datum.mesec; } virtual string ToString(); void SetProizvajalec(string proizvajalec){ this->proizvajalec=proizvajalec; } void Setletnik(int letnik){ this->letnik=letnik; } string GetProizvajalec(){ return proizvajalec; } int GetLetnik(){ return letnik; } void SetCena(double cena){ this->cena=cena; } double GetCena(){ return cena; } }; class Nakladalka: public Stroj{ private: int kubicna; string nozi; public: Nakladalka(string proizvajalec, int letnik, double cena, int dan, int mesec, int leto, int kubicna, string nozi): Stroj(proizvajalec, letnik, cena, dan, mesec, leto){ this->kubicna=kubicna; this->nozi=nozi; } }; class Plug: public Stroj { private: int sirina_oranja; string tip_pluga; public: Plug(string proizvajalec, int letnik, double cena, int dan, int mesec, int leto, int sirina_oranja, string tip_pluga): Stroj(proizvajalec, letnik, cena, dan, mesec, leto){ this->sirina_oranja=sirina_oranja; this->tip_pluga=tip_pluga; } string ToString(){ stringstream ss; ss<<"Proizvajalec: "<<proizvajalec<<" Letnik: "<<letnik<<" Cena: "<<cena<<" EUR "<<" Datum: "<<datum.dan<<"."<<datum.mesec<<"."<<datum.leto<<" Sirina oranja: "<<this->sirina_oranja<<" Tip pluga: "<<this->tip_pluga; return ss.str(); } }; class Prikolica: public Stroj { private: int nosilnost; bool kiper; string tip_prikolice; public: Prikolica(string proizvajalec, int letnik, double cena, int dan, int mesec, int leto, int nosilnost, bool kiper, string tip_prikolice): Stroj(proizvajalec, letnik, cena, dan, mesec, leto){ this->nosilnost=nosilnost; this->kiper=kiper; this->tip_prikolice=tip_prikolice; } string ToString(){ stringstream ss; ss<<"Proizvajalec: "<<proizvajalec<<" Letnik: "<<letnik<<" Cena: "<<cena<<" EUR "<<" Datum: "<<datum.dan<<"."<<datum.mesec<<"."<<datum.leto<<" Nosilnost: "<<this->nosilnost<<" Kiper: "<<this->kiper<<" Tip prikolice: "<<this->tip_prikolice; return ss.str(); } }; class Seznam: public Stroj { private: vector<Stroj*> seznamStrojev; public: void dodajStroj(Stroj* stroj){ seznamStrojev.push_back(stroj); } void izpisi(){ for(int i=0;i<seznamStrojev.size();i++){ seznamStrojev.at(i)->ToString(); } cout<<endl; } }; int main(){ Seznam* kmetija=new Seznam; Stroj* plug=new Plug("Eberhardt", 2000, 2550.50, 12, 3, 2010, 120, "Obracalni"); //rad bi ustvarjal objekte na tak nacin in jih potem shranil v vector, a se mi pojavlja napaka: fatal error LNK1120: 1 unresolved externals , kaj bi lahko bilo narobe? //Plug* plug=new Plug("Eberhardt", 2000, 2550.50, 12, 3, 2010, 120, "Obracalni"); kmetija->dodajStroj(plug); kmetija->ToString(); return 0; }
smoke ::
OP: Vem da se ne nanaša najbolj na temo, ampak slab class design imaš, mimogrede. Zakaj razred Seznam deduje od razreda Stroj? To konceptualno nima smisla. Vidim da v razredu Seznam hraniš std::vector golih kazalcev na objekte tipa Stroj. Kdo je lastnik teh objektov? Če je lastnik razred Seznam potem imaš problem uhajanja pomnilnika saj jih nikoli ne sprostiš. Če pa je lastnik kakšen drug razred imaš pa spet problem, saj se ti lahko zelo hitro zgodi, da boš enkrat skozi razred Seznam dostopal do objekta, ki ga je že nek drug del kode sprostil.
Lep pozdrav.
Lep pozdrav.
mallard ::
Metode Seznam::ToString(), ki jo kličeš tukaj
nisi definiral.
Pa kar je smoke rekel. Plug je Stroj, Nakladalka je Stroj, Prikolica je Stroj, Seznam pa pač ni Stroj, ni res?
kmetija->ToString();
nisi definiral.
Pa kar je smoke rekel. Plug je Stroj, Nakladalka je Stroj, Prikolica je Stroj, Seznam pa pač ni Stroj, ni res?
Zgodovina sprememb…
- spremenilo: mallard ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Evidenca osebOddelek: Programiranje | 1153 (838) | DaMachk |
» | c++ DODAJANJE elementov iz datoteke v vektorOddelek: Programiranje | 935 (810) | Tutankhamun |
» | [C#] - addDaysOddelek: Programiranje | 1644 (1529) | tx-z |
» | [Java][Naloga] Seznam študentov, majčken problemOddelek: Programiranje | 2310 (1997) | VASkO |
» | Problem s structurami v c++!!!Oddelek: Programiranje | 916 (814) | BigWhale |