» »

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.


#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;
}

b4d ::

b4d.sablun.org

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.

mallard ::

Metode Seznam::ToString(), ki jo kličeš tukaj
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 ()

hurlimannxt ::

Hvala za odgovore :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] Evidenca oseb

Oddelek: Programiranje
71153 (838) DaMachk
»

c++ DODAJANJE elementov iz datoteke v vektor

Oddelek: Programiranje
7935 (810) Tutankhamun
»

[C#] - addDays

Oddelek: Programiranje
111644 (1529) tx-z
»

[Java][Naloga] Seznam študentov, majčken problem

Oddelek: Programiranje
362310 (1997) VASkO
»

Problem s structurami v c++!!!

Oddelek: Programiranje
6916 (814) BigWhale

Več podobnih tem