» »

c++ rabim pomoč konstuktorji

c++ rabim pomoč konstuktorji

kretze ::

dober dan kaj mi lahko kdo razloži zakaj mi spodnji program ne deluje napaka je v konstruktorju natančneje(no default constructor exists for class "Die")


PS: knjižnic in glavnega programa nisem prilepil

class Die
{
private:
	int sides;
	int value;

public:
	
	void roll()
	{
		value = (rand() %(sides - 1 + 1)) + 1;
	}
	

	Die(int numSiedes)
	{
		unsigned seed = time(0);
		srand(seed);
		sides = numSiedes;
		roll();

	}





	int getSides()
	{
		return sides;
	}
	int getValue()
	{
		return value;
	}

};

class Dealer
{
private:
	Die die1;
	Die die2;

	int die1Value;
	int die2Value;
public:
	Dealer()
	{
		die1Value = 0;
		die2Value = 0;
	}

	void RollDIce()
	{
		die1.roll();
		die2.roll();

		die1Value = die1.getValue();
		die2Value = die2.getValue();
	}

	string choOrHan()
	{
		string result;
		int sum = die1Value + die2Value;
		if (sum % 2 == 0)
			result = "cho(even)";
		else
			result = "han(odd)";

		return result;


	}




};

amacar ::

Pa saj ti piše v napaki, kje je problem. 3 leta že odpiraš teme o c++, pa še kr takšne osnovne napake. Mislim, da nekaj delaš narobe.
Če v classu nimaš konstruktorja, ti samodejno compiler naredi defaultnega, ker pa si ga ti napisal ti ga ne naredi.
Zato ali napišeš default konstruktor brez parametrov, ali pa takoj ali kasneje inicializiraš objekt.

die1 = new Die(3);

amacar ::

Oz v tvojem primeru, kjer ni pointerjev:
Die die1(2);

kretze ::

amacar....naredil sem tako kot si napisal pa še mi zdaj ne deluje

dstr17_ ::

Ko se naredi instanca Dealerja, se kliče default konstruktor od die1 in die2. Lahko v razred 'Die' dodaš default konstruktor
Die() {}
ali pa spremeniš konstruktor od 'Dealer' tako da inicializiraš die1 in die2 z ne-default konstruktorjem
Dealer() : die1(Die(die1Value)), die2(Die(die2Value)) {}

kretze ::

alo folk kaj bi lahko kdo pogledal kodo prosim in mi povedal kje imam kaj narobe?? namreč koda deluje napake ni nobene...ampak vedno mi napiše da imam nič točk in da je rezultat vedno izenačen(za potrebe sem naredil program v slovenščini tako da nekatera imena niso preveč izvirna)

#include <iostream>   
#include <stdlib.h> 
#include <string> 
#include<ctime>
using namespace std;


class kocke
{
private:
	int stran;
	int vrednost;

public:
	kocke()
	{
		stran = 6;
	}

	void vrzi()
	{
		const int Min_Value = 1;
		vrednost = (rand() % (stran - Min_Value + 1)) + 1;
	}

	kocke(int stevilostrani)
	{
		unsigned seed = time(0);
		srand(seed);
		stran = stevilostrani;
		vrzi();
	}

	int vrniStran()
	{
		return stran;
	}

	int vrniVrednost()
	{
		return vrednost;
	}
};



class prodajalec
{
private:
	kocke kocka1;
	kocke kocka2;
	int vrednostKocke1;
	int vrednostKocke2;

public:
	prodajalec()
	{
		vrednostKocke1 = 0;
		vrednostKocke2 = 0;
	}


	void VrziKocke()
	{
		kocka1.vrzi();
		kocka2.vrzi();

		vrednostKocke1 = kocka1.vrniVrednost();
		vrednostKocke2 = kocka2.vrniVrednost();
	}


	string ChoORHan()
	{
		string ugotovitev;
		int rezultat = vrednostKocke1 + vrednostKocke2;
		if (rezultat % 2 == 0)
			ugotovitev = "cho(soda)";
		else
			ugotovitev = "han(liha)";
	
		return ugotovitev;


	}

	int vrniVrednostkoce1()
	{
		return vrednostKocke1;
	}

	int vrniVRednostKocke2()
	{
		return vrednostKocke2;
	}



};


class Igralec
{
private:
	string ime;
	string ugotovitev;
	int tocke;

public:
	Igralec(string igralcevoIme)
	{
		srand(time(0));
		ime = igralcevoIme;
		ugotovitev = " ";
		tocke = 0;
	}

	void NapovejUgotoVitev()
	{
		int Min_Value = 0;
		int Max_Value = 1;

		int ugotovitvenoStevilo;
		ugotovitvenoStevilo = (rand() % (Max_Value - Min_Value + 1)) + Min_Value;
		
		if (ugotovitvenoStevilo == 0)
			ugotovitev = "cho(sodo)";
		else
			ugotovitev = "han(liho)";
	}

	void dodajtocke(int novatocke)
	{
		 tocke += novatocke;
	}
	string VrniUgotovite()
	{
		return ugotovitev;
	}

	string vrniIme()
	{
		return ime;
	}

	int vrnitocke()
	{
		return tocke;
	}
};


void UgotoviUgotovitev(Igralec &ig, prodajalec &pd)
{
	string ugotovi = ig.VrniUgotovite();
	string choOrHan = pd.ChoORHan();
	const int dodaj_tocko = 1;

	cout << "igralec " << ig.vrniIme() << " je ugotovil " << ig.VrniUgotovite() << endl;
	if (ugotovi == choOrHan)
	{
		ig.dodajtocke(dodaj_tocko);
		cout << "dodatna tocka " << dodaj_tocko << " tocka od " << ig.vrniIme() << endl;
	}

}

void PredRezultati(prodajalec &pd,Igralec&ig1,Igralec&ig2)
{
	cout << "prodajalec je vrglec kocke stevilka " << pd.vrniVrednostkoce1() << " in " << pd.vrniVRednostKocke2() << endl;
	cout << "rezultat " << pd.ChoORHan() << endl;

	UgotoviUgotovitev(ig1, pd);
	UgotoviUgotovitev(ig2, pd);
}


void IzpisiVelikegaZmagovalca(Igralec &ig1, Igralec&ig2)
{
	cout << "---------------------------------------------------\n";
	cout << "igre je konec tu so rezultati!!!!" << endl;

	cout << ig1.vrniIme() << " "
		<< ig1.vrnitocke() << " tock ";

	cout << ig2.vrniIme() << " "
		<< ig2.vrnitocke() << " tock ";

	if (ig1.vrnitocke() > ig2.vrnitocke())
	{
		cout << ig1.vrniIme() << "JE VELIK ZMAGOVALEC!!!!! " << endl;
	}

	else if (ig2.vrnitocke() > ig1.vrnitocke())
	{
		cout << ig2.vrniIme() << "JE VELIK ZMAGOVALEC!!! " << endl;
	}

	else
	{
		cout << "igralca sta izenačena!!!" << endl;
	}

}
int main()
{
	string ImeIgralca1;
	string imeIgralca2;

	cout << "podaj ime prvega igralca" << endl;
	cin >> ImeIgralca1;

	cout << "podaj ime drugega igralca " << endl;
	cin >> imeIgralca2;

	Igralec igralec1(ImeIgralca1);
	Igralec igralec2(imeIgralca2);

	prodajalec pd;

	for (int i = 0; i < 5; i++)
	{
		cout << "------------------------------------\n";
		cout << "sedaj se igra " << (i + 1) << " runda "<<endl;
		pd.VrziKocke();
		igralec1.NapovejUgotoVitev();
		igralec2.NapovejUgotoVitev();
		PredRezultati(pd,igralec1,igralec2);
		


	}
	IzpisiVelikegaZmagovalca(igralec1, igralec2);


	system("pause");// 
	return 0;
}

Snowflake2 ::

kocke()
    {
        stran = 6;
    }

in
kocke(int stevilostrani)
    {
        unsigned seed = time(0);
        srand(seed);
        stran = stevilostrani;
        vrzi();
    }

Zakaj. Piši komentarje kaj točno dela kaj. Se zaradi tega niti ne bom potrudil razumet tvoje packe.


Vredno ogleda ...

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

C# povezava forma in classa

Oddelek: Programiranje
172143 (1606) Miko55
»

[Java] Objekt poslan k metodi v kakšnem stanju?

Oddelek: Programiranje
211461 (908) shadeX
»

[C++] Kocka (naloga iz tekmovanja)

Oddelek: Programiranje
161464 (1093) Tutankhamun
»

Naloga v C#

Oddelek: Programiranje
72542 (2042) Hardstyle
»

[C++]Instanca razreda

Oddelek: Programiranje
81463 (1354) Senitel

Več podobnih tem