Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Funkcja zwracająca (char*)& ?

Ostatnio zmodyfikowano 2014-05-19 22:30
Autor Wiadomość
anieszka
Temat założony przez niniejszego użytkownika
[C++] Funkcja zwracająca (char*)& ?
» 2014-05-19 22:09:33
Mam taki problem miałam funkcję (operującą na drzewie r-b)
gdzie (double wartosc; )

double& znajdz_wartosc(char *klucz)

i wywoływanie w ten sposób:

mojastruktura.znajdz_wartosc("abc")->wartosc=3.5;

co od razu przypisywało. Teraz muszę tą funkcję zmodyfikowac aby
wartosc była typu char* wartosc;
czy ten zapis:

 (char*)& znajdz_wartosc(char *klucz)  jest prawidłowy?

i wtedy "wywołanie" w ten sposób?
strcpy((mojastruktura.znajdz_wartosc("abc")),"wartosc" );

Pewnie najłatwiej byłoby użyć stringa, ale mam takie narzucone ograniczenia że nie mogę, jedynie <cstring>
P-110438
Monika90
» 2014-05-19 22:30:19
(char*)& znajdz_wartosc(char *klucz)
zdecydowanie nie jest prawidłowy, deklaracja powinna być taka
char * znajdz_wartosc( char * klucz );

i wtedy da się używać tak jak chcesz:
strcpy(( mojastruktura.znajdz_wartosc( "abc" ) ), "wartosc" );

pod warunkiem, że zwrócony wskaźnik będzie wskazywał na wystarczająco dużą tablicę znaków, czyli wartościami w drzewie bedą musiały być albo tablice znaków o z góry ustalonym rozmiarze, np
char wartosc[ 20 ];
, albo wskaźniki do dynamicznie alokowanych tablic o odpowiednio dużym rozmiarze. Jakby nie było, przy użyciu strcpy musisz uważać by nie wyjść poza zakres tablicy docelowej.
P-110439
« 1 »
  Strona 1 z 1