przekazywanie wskaźnika do funkcji

0

mam przykładowo klase:

class moja_klasa
{
public:
int wartosc;
};
 

następnie tworze obiekt:


moja_klasa obiekt;

 

i teraz probuje przekazac do funkcji wskaznik do tego obiektu:

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

i niestety jest "expression must have class type"

co robie nie tak??

0

Jeżeli wywołujesz funkcję taK:

zmien_wartosc(&obiekt)

to powinno działać.

0

zmieniłem ale dalej ten sam błąd

0

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

void zmien_wartosc(moja_klasa &obiekt_wsk)
{
    obiekt_wsk.wartosc=1;
}
...
zmien_wartosc(obiekt);
0

a jednak dziala jesli w obiekcie jest zmienna.

a ja w obiekcie mam:

int *tab_liczby;

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

i wtedy jak poprzednio

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

// o co tu chodzi

0
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 :-(

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1