przekazywanie wskaźnika do funkcji

przekazywanie wskaźnika do funkcji
  • Rejestracja: dni
  • Ostatnio: dni
0

mam przykładowo klase:

Kopiuj
class moja_klasa
{
public:
int wartosc;
};
 

następnie tworze obiekt:

Kopiuj

moja_klasa obiekt;

 

i teraz probuje przekazac do funkcji wskaznik do tego obiektu:

Kopiuj
void zmien_wartosc(moja_klasa *obiekt_wsk)
{
obiekt_wsk->wartosc=1;
}
 

i niestety jest "expression must have class type"

co robie nie tak??

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeżeli wywołujesz funkcję taK:

Kopiuj
zmien_wartosc(&obiekt)

to powinno działać.

  • Rejestracja: dni
  • Ostatnio: dni
0

zmieniłem ale dalej ten sam błąd

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

tylko wtedy wypadałoby sprawdzać wewnątrz funkcji obiekt czy nie jest NULL…
dlatego bezpieczniejsze jest użycie referencji:

Kopiuj
void zmien_wartosc(moja_klasa &obiekt_wsk)
{
    obiekt_wsk.wartosc=1;
}
...
zmien_wartosc(obiekt);
  • Rejestracja: dni
  • Ostatnio: dni
0

a jednak dziala jesli w obiekcie jest zmienna.

a ja w obiekcie mam:

Kopiuj
int *tab_liczby;

tab_liczby = new string[a]; //potem rezerwuje pamiec

i wtedy jak poprzednio

Kopiuj
 
int  wielkosc_tablicy(moja_klasa &obiekt)
{
int wielkosc = obiekt.tab_liczby.size();//tu expression must have class type
return wielkosc;
}

// o co tu chodzi

dzejo
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 787
0
Kopiuj
obiekt.tab_liczby.size();//tu expression must have class type

tab_liczby jest tablicą obiektów . size możesz wywołać dla pojedynczego string .
eeeeeeee . tam wskaźnik masz do int , a alokujesz tablice string , co to za kaszanka :-(

  • Rejestracja: dni
  • Ostatnio: dni
0

blad podczas przepisywania.
ale zrobilem to na skroty
i w klasie stworzylem dodatkowa zmienna przechowujaca rozmiar tablicy:)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.