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.