Konstruktor domyślny w klasie

0

Mam taki kod:

class PozycjaZamowienia
{
private:
	string nazwa;
	double iloscSztuk;
	double cena;
public:
	//PozycjaZamowienia() {}
	PozycjaZamowienia(string nazwa, double ilosc, double cena)
		:nazwa(nazwa),iloscSztuk(ilosc),cena(cena)
	{}
};
class Zamowienia
{
private:
	string nrZamowienia;
	PozycjaZamowienia pozycjaZamowienia[20];
public:
	Zamowienia()
	{

	}

};

Dlaczego krzyczy mi o konstruktor domyślny? Po co mu on?

Znalazłem taki kod:

// C2512.cpp
// Compile with: cl /W4 c2512.cpp
// C2512 expected
struct B {
   B (char *) {}
   // Uncomment the following line to fix.
   // B() {}
};

int main() {
   B b;   // C2512 - This requires a default constructor
}

Czyli w klasie Zamowienia, pole PozycjaZamowienia tworzy obiekt PozycjaZamowienia, ale bez parametrów, tak?
To jak przekazać te parametry w klasie Zamowienia? Czy po prostu musi być w klasie PozycjaZamowienia ten konstruktor domyślny bez parametrów?

2

Jak chcesz powołać tablicę pozycji, to ona musi być zainicjowana.
A co ją zainicjuje? Konstruktor domyślny

ps. ta tablica[20] jest STARSZNA , użyj std::vector

0

W zadaniu mam że ma być tablica.
Ale jak dam:

class PozycjaZamowienia
{
private:
	string nazwa;
	double iloscSztuk;
	double cena;
public:
	//PozycjaZamowienia() {}
	PozycjaZamowienia(string nazwa, double ilosc, double cena)
		:nazwa(nazwa),iloscSztuk(ilosc),cena(cena)
	{}
};
class Zamowienia
{
private:
	string nrZamowienia;
	PozycjaZamowienia pozycjaZamowienia;
public:
	Zamowienia(PozycjaZamowienia p)
	{
		pozycjaZamowienia = p;
	}

};

Też pluje się o konstruktor domyślny.

Dobra, przez listę inicjalizacyjną idzie, ale nie z tablicą:

class Zamowienia
{
private:
	string nrZamowienia;
	PozycjaZamowienia pozycjaZamowienia;
public:
	Zamowienia(PozycjaZamowienia p)
		:pozycjaZamowienia(p)
	{
		
	}

2

Zadanie które zmusza wykręcać się jakimiś dziwolągami bo kazano użyć nie odpowiedniego środka?! WTF?!
To anty-dydaktyczne zadanie.
Stwórz konstruktor domyślny, może nic nie robić, ale być musi, oraz dodaj do zamówienia pole iloscZamowien na początku zainicjalizuje się śmieciami,
zaś przy dodaniu zamówienia wpiszesz dane oraz zwiększysz iloscZamowien.
Ewentualnie stwórz tablicę wskaźników ...

0

Ok, czyli po prostu musi on tam być.
iloscZamowien, to planowałem.
Dzięki za pomoc.

3

Nie, wcale nie musi, jeżeli robimy z głową.
Ale jak nad głową topór idioty ...

0
hansikkk napisał(a):
 	PozycjaZamowienia pozycjaZamowienia[20];

Zamień to na vector (pusty na początu) i rób na nim emplace_back lub push_back. Bo vector to też tablica. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1