Witam!
Piszę pewien program i mam problem. Otóż przy próbie kompilacji pojawia się błąd:
Error 1 error C3867: 'produkt::retcena': function call missing argument list; use '&produkt::retcena' to create a pointer to member
gdzie interesujące części programu wyglądają tak:
/*produkt.h*/
class produkt
{
private:
double cena;
public:
produkt();
virtual ~produkt();
void setcena(int c);
double retcena();
/*produkt.cpp*/
produkt::produkt()
{
}
produkt::~produkt()
{
}
void produkt::setcena(int c)
{
podatek = 0.22*c;
marza = 0.1*c;
cena = c + podatek + marza;
}
double produkt::retcena()
{
return cena;
}
/*main.cpp*/
ksiazka k1 = ksiazka();
k1.setcena(30);
cout << k1.retcena << endl;
Jak rozwiązać ten problem?
Fizyda
(Fizyda)
13 Kwiecień 2016 08:40
#2
void produkt::setcena(int c)
{
podatek = 0.22*c;
marza = 0.1*c;
this->cena = c + podatek + marza;
}
double produkt::retcena()
{
return this->cena;
}
Edgarus
(Edgarus)
13 Kwiecień 2016 11:23
#4
A może:
cout << k1.retcena() << endl;
Nawiasów brakuje, a to funkcja, a nie pole klasy.
działa <3 dzięki wielkie. Poszło z tymi nawiasami, aczkolwiek dodałem jeszcze & i ogólnie wygląda to tak:
---produkt.h---
double &retcena();
---produkt.cpp---
double &produkt::retcena()
{
return this->cena;
}
Szczerze mówiąc nie rozumiem do końca, co to zmienia, ale skoro kompilator tak podpowiadał…
Fizyda
(Fizyda)
13 Kwiecień 2016 12:16
#6
To zmienia bardzo wiele bo teraz zwracasz referencje do własności cena i możesz ją modyfikować poza klasą.
A jeszcze takie jedno inne pytanie. Potrzebuję utworzyć tablicę obiektów. Mam klasy: nadrzędną A i podrzędne B, C, które dziedziczą z A. Próbuję zrobić to w taki sposób:
B **tablica;
tablica=new B *[10];
po czym wpisuję:
tablica[0]=b1;
gdzie b1 to obiekt klasy B
ale pokazuje komunikat: "no suitable conversion from B to A exists.
Jakiego typu powinna być tablica aby pogodzić wszystkie klasy? Dodam, że w klasach obiekty też są różnego typu.
Fizyda
(Fizyda)
13 Kwiecień 2016 16:09
#9
Klasy nadrzędnej. Przeczytaj te linki co ci podesłał Rolek0, poczytaj o wskaźnikach i naucz się programowania obiektowego.