Przełądowanie nie ma legalnej konwersji
Ostatnio zmodyfikowano 2013-03-07 11:03
Piwniczne Temat założony przez niniejszego użytkownika |
Przełądowanie nie ma legalnej konwersji » 2013-03-07 10:35:00 Witam, piszę program związny z listą - chce jednak poszczególne opcje pokroju wyświetl wsadzić w osobne funkcje poza main. Przy próbie wykonania tego na wskaźnikach, otrzymuje błąd : 1>c:xxx\main.cpp(70): error C2663: 'std::list<_Ty,_Ax>::push_back' : 2 overloads have no legal conversion for 'this' pointer MV2010. kod programu : #include <cstdio> #include <list> #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h>
using namespace std;
void wypelnij( list * wsk, int n );
int main() { typedef list < int > defl; srand( time( 0 ) ); int n; cout << "Podaj dlugosc listy: "; cin >> n; int integer; defl lista; list * wsk; wsk = & lista; wypelnij( wsk, n ); for( list < int >::iterator iter = lista.begin(); iter != lista.end(); ++iter ) cout << * iter << "\n"; cout << "wcisnij enter\n"; getch(); lista.push_front( integer = rand() % 100 ); lista.push_front( integer = rand() % 100 ); if( !lista.empty() ) lista.pop_back(); if( !lista.empty() ) lista.pop_front(); for( list < int >::iterator iter = lista.begin(); iter != lista.end(); ++iter ) cout << * iter << "\n"; cout << "wcisnij enter\n"; getch(); cout << lista.size(); return 0; }
void wypelnij( list * listaa, int n ) { for( int i = 0; i < n; i++ ) listaa->push_back( rand() % 100 ); }; jak to zrobić, aby w funkcjach wypełniać, wyświetlać tę tablicę ? Jak zniwelować/naprawić ten błąd ?[/code] |
|
krzyk |
» 2013-03-07 11:00:42 Nie możesz tworzyć wskaźnika na niezdefiniowany list. typedef list < int > defl; void wypelnij( defl * wsk, int n );
void wypelnij( list < int > * wsk, int n );
|
|
Piwniczne Temat założony przez niniejszego użytkownika |
» 2013-03-07 11:03:46 Działa ! Wielkie dzięki,
czyli rozumiem, ze w przyszłości - nie mogę tworzyć wskaźnika na ogólny typ LIST, lecz dopiero na konkretnie zdefiniowany np List<int> etc. nie wiedziałem tego - teraz wiem, dzięki jeszcze raz !
myśląc głebiej to całkiem logiczne, wskaźnik w końcu musi znać ilość zalokowanej pamięci by "przeskoczyć" na kolejną zmienną przy operacji ++, czego nie mógłby wykonać gdyby nie wiedział, czy są to elementy int, char, double czy inne etc. |
|
« 1 » |