Zmiana wartości pola prywatnego w obiekcie znajdującym się w tablicy.

0

Potrzebuje zmieniać wartość pola prywatnego obiektu, który jest polem drugiej klasy, za pomocą funkcji getujących i setujących wychodzących z tej drugiej klasy. Tłumacząc dokładniej w obu klasach mam pole ilość(quantity) i chcę zmienić te pole w klasie pierwszej w sposób : ilość klasy pierwszej - ilość klasy drugiej.

kod:

if (Kopiec[0].getQuantity() > Kopiec[0].getTowar().getQuantity())
		{
			cout << "Brak dostepnosci" << Kopiec[0].getTowar().getQuantity() - Kopiec[0].getQuantity() << endl;
		}
		else
		{
			int x= (Kopiec[0].getTowar().getQuantity()) - (Kopiec[0].getQuantity());
			Kopiec[0].getTowar().SetQuantity(x);
		}

Zmienna x przyjmuje dobrą wartość, czyli dobrze się odejmuje, natomiast kiedy już ją setuje za pomocą SetQuantity() to nie zmienia mi się wartość pola quantity w klasie pierwszej. Seter wygląda tak :

void Towar::SetQuantity(int X)
{
	quantity = X;
}

Ze wszystkiego wynika, że seter nie działa, ale nie mam pojęcia czemu.

0

My też, szkoda, że nie pokazałeś funkcji getTowar()

0

Taka elegancka jest:

Towar Zamowienie::getTowar()
{
	return towar;
}
1

Czyli zwracasz kopię, modyfikujesz kopię, oczekujesz, że zmodyfikowany zostanie oryginał.

Zwracaj referencję z gettera:

Towar& Zamowienie::getTowar()
{
    return towar;
}
0

Dziękuje <3

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