[C++] Kompilator MinGW-4.8.1 a standard C++
Ostatnio zmodyfikowano 2014-10-18 23:33
marian.zacharski Temat założony przez niniejszego użytkownika |
[C++] Kompilator MinGW-4.8.1 a standard C++ » 2014-10-18 15:53:25 Szanowni, ostatnio zacząłem się uczyć C++ z przyjemnej książki Symfonia C++ Jerzego Grębosza. Wykonanie ćwiczenia poniżej ze wskaźnikami przekazywanymi do funkcji powoduje wyrzut kilku ekranów błędów kompilatora. #include <iostream> using namespace std;
void wypisz( int * y, int rozmiar );
main() { int tab[ 4 ] = { 0, 1, 2, 3 }; cout << "Zawartosc TABLICY : " << wypisz( tab, 4 ) << endl; }
void wypisz( int * y, int rozmiar ) { for( int i = 0; i < rozmiar; i++ ) { cout << *( y++ ) << ","; } }
Niestety nie wiem czy wystąpił problem z kompilatorem czy też prezentowany w książce przykład jest błędny, chociaż ksiazka jest wg mnie porzadnie napisana i wiem, że była przez ludzi chwalona. Używam kompilatora MinGW-4.8.1 pod Win7. Inny przykład z którym nie radzi sobie moj kompilator to: int tabint[ 3 ] = { 0, 1, 2 }; float tabflo[ 3 ] = { 0.1, 0.2, 0.3 }; int * wi; float * wf;
for( int i = 0, wi = tabint, wf = tabflo; i < 3; i++ )
wi = tabint;
wf = tabflo; for( int i = 0; i < 3; i++ )
Co oznacza takie zachowanie kompilatora? Czy to problem z moim srodowiskiem do kompilowania c++, czy coś się pozmieniało w standardzie jezyka c++ że książka z 1999 roku nadaje sie na śmietnik? |
|
Monika90 |
» 2014-10-18 15:58:46 Należy podać typ zwracany z funkcji main, tzn. zamiast powinno być for( int i = 0, wi = tabint, wf = tabflo; i < 3; i++ )
|
bo ten zapis nie ma sensu w ogóle, jest to błąd typu. wf i wi są typu int a próbujesz zainicjalizować je za pomocą wskaźników. Pierwszy standard C++ został ratyfikowany w 1998, to były błędy już wtedy. EDIT: I jeszcze to cout << "Zawartosc TABLICY : " << wypisz( tab, 4 ) << endl;
|
Funkcja wypisz zwraca void, nie da się wyniku tej funkcji wysłać do strumienia. Mozna to zapisać w osobnych instrukcjach cout << "Zawartosc TABLICY : "; wypisz( tab, 4 ); cout << endl;
|
|
marian.zacharski Temat założony przez niniejszego użytkownika |
» 2014-10-18 23:33:24 Problem był trywialny :/ Jak sie okazało, było cout w cout, czyli zamiast cout << wypisz( tab, 4 );
w której to funkcji 'wypisz' już było cout, powinno być po prostu |
|
« 1 » |