Aloin tässä ihan aikani kuluksi ja c++-harjoitukseksi tekemään yleisten käyttöjärjestelmien tapaista käyttöliittymää mahdollisesti johonkin myöhempään peliin/ohjelmaan. Sain jopa luokat toimimaan ongelmitta, edellisen kerran ei mikään toiminut kunnolla (ja tein siitä aiheen tänne). Mutta nyt en saa stringiä funktioon/aliohjelmaan (en tiedä nimitystä... se void-juttu). Compiler valittaa:
argument of type 'std::string (window::)()´does not match 'std::string (*)()'
stringiin liittyvät koodit järjestyksessä:
class window{ public: int x,y; int w,h; string txt() ; bool act; bool grab; bool ex; int scroll; };
void wtext(int x,int y,string str(),int col) { }
wtext(windows[x].x,windows[x].y,windows[x].txt,0xffffff);
Tuo viimeisin on x:llä toimivan for-loopin sisällä. windows-olion alustus on tehty.
koitappa tuon string txt() ; tilalla string txt;
Toimii :)
Huomasin ettei kaikkee aina kannata kattoo netistä... tuli vähän mutkia matkaan ja lopputuloksena erehdyin katsomaan netistä stringin alustuksen ja siellä luki string str() :O
KoodiNoppa kirjoitti:
Toimii :)
Huomasin ettei kaikkee aina kannata kattoo netistä... tuli vähän mutkia matkaan ja lopputuloksena erehdyin katsomaan netistä stringin alustuksen ja siellä luki string str() :O
Ihan oikein siellä netissä luki, mutta ei tuolla luokan määrittelyssä alusteta muuttujia :-) Muuttujathan alustetaan vasta luokan rakentajassa (constructor-sanalla google kertonee lisää).
Muutenkin tuo luokkasi on "väärin". Toimiva kyllä, mutta luokan jäsenmuuttujia ei ole syytä kirjoittaa public-osioon. Jos ne laittaa public:iin, hukkuu samalla koko luokkien käytön idea. struct:ia sopii käyttää noin - se ei vaadi edes public-sanaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.