olen saanut itseni umpisolmuun funktion, jonka pitäisi palauttaa osoitin sdl-kuvapintaan(SDL_Surface), kanssa
funktio näyttää tältä:
SDL_Surface* getPicSurfaceCon(){ return (&kuva); }
alunperin paluuarvo oli muotoa (SDL_Surface)*
mutta kääntäjä ei päästänyt sitä läpi..
eli miten saan tuon kuvapinnan palautettua oikeaoppisesti?
return kuva;
Vai mitä haet takaa?
Tässä kaikki kolme tapausta:
SDL_Surface *kuva; SDL_Surface *hae_kuva() { return kuva; // kuva on jo osoitin (SDL_Surface *) }
Tyyppi t; Tyyppi* hae() { return &t; // t ei ole osoitin, joten tarvitaan &. }
int * osoitin; int hae_arvo() { if (!osoitin) { return 0; // Osoitin ei osoita minnekään, joten ei rikota mitään. } return *osoitin; // *osoitin eli se, minne osoitin osoittaa. }
Tähden sijoittelulla (ympäröivillä välilyönneillä) ei ole merkitystä, kuten esimerkeistä käy ilmi.
kiitän ja kumarran
Huomattava seikka:
Luokka* funktio() { Luokka olio("Rakentajan parametri"); // Tässä luodaan uusi muuttuja return &olio; /* Ja tässä palautetaan sen osoite, jonka jälkeen muuttujan näkyvyysalue päättyy ja samalla muuttuja tuhotaan, joten funktion kutsuja saa käsiinsä ns. Nevada-osoittimen, eli osoittimen, joka osoittaa mihin sattuu kohtaan muistissa (tai siis siihen kohtaan missä muuttuja oli ennen tuhoamista). */ };
täytyy tuokin pitää mielessä ;)
Aihe on jo aika vanha, joten et voi enää vastata siihen.