Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Osoitin funktion paluuarvona (C++)

ByteMan [11.03.2008 22:16:06]

#

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?

Tumpelo [11.03.2008 22:19:51]

#

return kuva;

Vai mitä haet takaa?

Metabolix [11.03.2008 22:21:17]

#

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.

ByteMan [11.03.2008 22:34:16]

#

kiitän ja kumarran

TsaTsaTsaa [11.03.2008 23:02:47]

#

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). */
};

ByteMan [12.03.2008 08:58:18]

#

täytyy tuokin pitää mielessä ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta