Astaroth Temat założony przez niniejszego użytkownika |
[Lekcja 26] » 2013-05-16 15:47:22 Jak przekazać tablicę typu string do funkcji ? W zadaniu mamy taki zapis. for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); Próbowałem coś pokombinować, ale mi nie wychodzi. void wyczyajOsobe( std::string *& imie, std::string *& nazwisko, int *& wiek ) Więc proszę o poradę jak przekazać tą tablice do funkcji. |
|
pekfos |
» 2013-05-16 15:59:47 Nie wychodzi, czyli co? |
|
Nerevar |
» 2013-05-16 16:23:37 Przekombinowałeś. Skąd ci się wzięło takie cudo "&*"? wystarczy napisać: std::string* nazwa edit: W twoim przypadku void wyczyajOsobe( std::string * imie, std::string * nazwisko, int * wiek ) Będzie to funkcja, która jako argumenty przyjmuje 3 tablice(wskaźniki). Jednak sądząc po tym co napisałeś wcześniej: for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); Podejrzewam, że wcale nie chcesz przekazywać do tej funkcji tablic. W tym wypadku np. imie oznacza i-ty element tablicy imie(więc prawdopodobnie jest to strnig a nie tablica stringów). Ehh, wybacz wzięło mnie na głębsze tłumaczenie, a teraz wydaje mi się to trochę pokrętne, ale mam nadzieję, że mimo wszystko jest to w miarę zrozumiałe i pomocne :).
|
|
Berux |
» 2013-05-16 16:40:03 lub std::string nazwa[] |
|
Astaroth Temat założony przez niniejszego użytkownika |
» 2013-05-16 16:40:42 Wyskakuje mi że 'wczytajOsobe' was not declared in this scope| więc coś pochrzaniłem ze składnią coś, a kombinując to w pewnym momencie próbowałem użyć referencji z stąd &, chociaż w sumie, to było bez sensu. |
|
Berux |
» 2013-05-16 16:42:14 Pokaż cały kod. |
|
pekfos |
» 2013-05-16 16:50:00 wyczyajOsobe to nie wczytajOsobe . |
|
Astaroth Temat założony przez niniejszego użytkownika |
» 2013-05-16 16:51:37 Ok doszedłem do wniosku ,że nie deklaruje tego i z wywołania, ale jak to zrobić? #include <iostream> #include <string> void wczytajOsobe( std::string * imie, std::string * nazwisko, int * wiek ) { for( int indeks = 0; indeks < 3; indeks++ ) { std::cout << "Imie :"; std::cin >> imie[ indeks ]; std::cout << "Nazwisko :"; std::cin >> nazwisko[ indeks ]; std::cout << "Wiek :"; std::cin >> wiek[ indeks ]; } } int main() { std::string imie[ 2 ]; std::string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; } po naprawieniu nazwy :basic_string<char>}' to 'std::string* {aka std::basic_string<char>*}' for argument '1' to 'void wczytajOsobe(std::string*, std::string*, int*)'| |
|
« 1 » 2 |