Problem z konstruktorem klasy. Błąd: " cannot convert parameter (...) from(...)"
Ostatnio zmodyfikowano 2011-07-23 22:55
diego997 Temat założony przez niniejszego użytkownika |
Problem z konstruktorem klasy. Błąd: " cannot convert parameter (...) from(...)" » 2011-07-23 21:58:25 class poziom_1 { public: poziom_1( Enemy * wrog[ 61 ] ); };
poziom_1 poziom( & Przeciwnik );
Wyskakuje mi błąd 'poziom_1::poziom_1(Enemy *[])' : cannot convert parameter 1 from 'Enemy *' to 'Enemy *[]'
|
|
akwes |
» 2011-07-23 22:28:45 Tablica to wskaźnik.
A dokładniej to nazwa tablicy jest wskaźnikiem jej pierwszego elementu ;p
Więc int ala[] = int * ala; a co za tym idzie int * ala[] = int ** ala;
W jednym z moich programów doszedłem to moja_klasa *** cos; zostało to opatrzone komentarzem //generał
Zresztą odbierasz tablicę a wysyłasz jeden element :P ? |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-23 22:38:01 Definicja przeciwnika jest taka:
Enemy Przeciwnik[61]; |
|
Thud |
» 2011-07-23 22:43:29 <wywalić> |
|
akwes |
» 2011-07-23 22:48:31 Bo wysyłasz adres wskaźnika(Przeciwnik to wskaźnik do pierwszego elementu tablicy) a chcesz odebrać wskaźnik na tablicę. Więc albo Enemy * Przeciwnik[ 61 ];
albo poziom_1( Enemy wrog[ 61 ] );
Przy czym obie wersje wymagają dużych zmian. Bo druga jest nieakceptowalna bo zrobi kopię tablicy, a pierwsza wersja wymaga utworzenia konstruktora dla przeciwnika. |
|
Thud |
» 2011-07-23 22:53:14 Mój przekształcony (działający) kod. #include <iostream> #include <string> using namespace std; class Enemy { std::string String; public: std::string ret() { return String; } Enemy() { String = "Haha"; } }; class poziom_1 { public: poziom_1( Enemy * wrog ) { cout <<( *( wrog + 1 ) ).ret() << endl; } };
int main() { Enemy Przeciwnik[ 61 ]; poziom_1 poziom( Przeciwnik ); } Musiałem wprowadzić kilka zmian, ale chyba o to chodziło. Poczytaj lekcję o wskaźnikach. |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-23 22:55:38 Dzięki wam już działa |
|
« 1 » |