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.