Ahoj lidi, tak jsem konečně dospěl ke třídám, a hned mam první problém. V knize Mistrovství v C++ byl příklad předělat strukturu a funkce které s ní operovaly do třídy. Tak jsem to jakž takž odladil až nakonec mi to hází jedinou chybu, ale zato nevím co s tím :(
Kód je následující:
#include <iostream>
using namespace std;
class golf
{
private:
char fullname[40];
int handicap;
public:
golf();
int setgolf();
void setgolf2(const char * name, int hc);
void handicap(int hd);
void showgolf();
~golf() {};
};
int main()
{
golf hraci, hraci2, hraci3;
hraci.setgolf;
hraci.showgolf;
hraci2.setgolf2("Jan Broft",10);
hraci2.showgolf();
hraci3.handicap(5);
hraci3.showgolf();
cout <<"\n\nAhoj!\n";
cout<<endl;
system("PAUSE");
return 0;
}
golf::golf()
{
strcpy(fullname,"Neznamy hrac");
handicap=0;
}
int golf::setgolf()
{
cout<<"Zadejte sve jmeno a golfovy handicap:\n";
cout<<"Jmeno: ";
if(!(cin.get(fullname, 40))) { return 0; }
cout<<"Handicap: ";
int h;
cin>>h;
handicap=h;
cout<<endl;
return 1;
}
void golf::setgolf2(const char * name, int hc)
{
strcpy(fullname,name);
handicap=hc;
}
void golf::handicap(int hd)
{
handicap=hd;
}
void golf::showgolf()
{
cout<<fullname<<endl;
cout<<handicap<<endl<<endl;
}
A chybu mi kompilátor hlásí tuto:
21 C:\DATA\C++\mistrovstvi-28.cpp declaration of `void golf::handicap(int)'
14 C:\DATA\C++\mistrovstvi-28.cpp conflicts with previous declaration `int golf::handicap'
C:\DATA\C++\mistrovstvi-28.cpp In function `int main()':
30 C:\DATA\C++\mistrovstvi-28.cpp statement cannot resolve address of overloaded function
31 C:\DATA\C++\mistrovstvi-28.cpp statement cannot resolve address of overloaded function
Obzvláště nerozumím těm posledním 2 řádkům co říká kompilátor "... address of overloaded function". Jo ta struktura předtím používala přetěžování funkcí, ale já to přepsal tak aby tam žádný přetížení nebylo, nebo ne? A taky nevim proc to hlásí že se tam tluče deklarace void golf::handicap(int) a int golf::handicap. Ta druhá deklarace v kódu přece není vůbec obsažena.
Díky za odpověď.