Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char

AutorWiadomość
Temat założony przez niniejszego użytkownika
Funkcja zwracająca wskaźnik do tablicy wskaźników wskazujących na elementy typu char
» 2018-03-29 23:09:54
Cześć,
uczę się C++ z 'Opus Magnum C++11' i natrafiłem na zadanie w którym tak jak w temacie należy stworzyć taką funkcję. Nie wiem, dlaczego kod który wstawiłem nie działa - bład zwracany 'error: cannot convert ‘char**’ to ‘char*’ in return'. Jeżeli ktoś wie jak to rozwiązać to będę wdzięczny. Z góry dzięki :)

Treść
Napisz funkcję, która zarezerwuje 10 - elementową tablicę, a jej adres przekaże wskaźnikowi o nazwie linijka. Ma to być tablica, w której można przechowywać wskaźniki do tablic znaków.

C/C++
#include <iostream>
using namespace std;
char * fun();

int main() {
    char * linijka = fun();
    delete[] linijka;
    return 0;
}

char * fun() {
    return new char *[ 10 ];
}

P-170350
» 2018-03-29 23:40:45
Typ zwracany to
char **
.
P-170351
Temat założony przez niniejszego użytkownika
» 2018-03-29 23:59:53
Wiem, w takim razie jak dynamicznie stworzyć tablice wskaźników?
P-170353
» 2018-03-30 00:07:20
Poprawnie?
return std::vector < std::string >( 10 );



Według treści zadania? Zrobiłeś wszystko prawie dobrze tylko tam gdzie masz pojedynczy wskaźnik musisz dać podwójny, oprócz alokacji.
C/C++
#include <iostream>
using namespace std;
char ** fun();

int main() {
    char ** linijka = fun();
    delete[] linijka;
    return 0;
}

char ** fun() {
    return new char *[ 10 ];
}

musisz pamiętać tylko o tym, że elementy twojej stworzonej tablicy na nic nie wskazują, czyli linijka[0] nie skazuje na nic, jeżeli chcesz tam trzymać jakiś napis musisz najpierw zaalokować na niego miejsce. W takim wypadku musisz też pamiętać o poprawnym zwalnianiu pamięci, czyli najpierw elementy tablicy linijka a na końcu sama tablica linijka.
P-170354
» 2018-03-30 00:09:42
return new char *[ 10 ];
Przecież tworzysz dynamiczną tablicę wskaźników. Problem jest w typie, który funkcja deklaruje, że zwraca. Powinien być
char **
, a jest
char *
.
P-170355
Temat założony przez niniejszego użytkownika
» 2018-03-30 09:10:40
Dzięki :) zamykam.
P-170356
« 1 »
 Strona 1 z 1