Obsługa Class

0

<font color="red">W sekcji "harder file" tworze klase CMapa : </span>
class CMapa
{
CMapa();
~CMapa();
int poczatek_Y;
int X;
int Y;
int romb_X;
int romb_Y;
int Zapisz (charnazwa_pliku);
int Wczytaj (char
nazwa_pliku);
void Rysuj_mape (int poczatek_X,int koniec_X,int koniec_Y);
};
<font color="red">W sekcji "surace" wpisuje : </span>

void CMapa::Rysuj_mape (int poczatek_X,int koniec_X,int koniec_Y)
{
romb_X=32;
romb_Y=32;
Form1->Mapa1->Canvas->Rectangle(poczatek_X,poczatek_Y,koniec_X,koniec_X);
}
<font color="red">Chcialbym aby po naciśnięciu buttona właczał sie Rysyj_Mape(ble,ble,ble) . Probowalem tak CMapa.Rysuj_mape(ble,ble,ble) ale nie idze !!</span>

0

Zanim wywołasz metodę na rzecz jakiegoś obiektu musisz go zadeklarować.
[code]CMapa mapa;
mapa.Rysuj_mape(1, 2, 3);[/code]

0

Niedziała !! Gdzie mam zadeklarowac obiekt ?!

0

Probowalem tak CMapa.Rysuj_mape(ble,ble,ble) ale nie idze

Jeśli chcesz to możesz sie odwoływac do metody nie przez obiekt , tylko przez nazwe klasy , ale tylko wtedy gdy jest to metoda statyczna , aby zrobić metodę statyczną , przed jej deklaracją piszesz slowo static , np:
static Rysuj_mep(arg);
ale znowu , żeby metoda mogła być statyczna może ona korzystać jedynie ze składowych statycznych , które deklaruje sie analogicznie , ale musisz tez potem dla nich zarezerwować pamięć , więc napisać np :
int CMapa::Romb_x;
za deklaracją klasy . Troche to pogmatwane , ale sie przydaje , więc u ciebie wyglądało by to tak :

class CMapa
{
CMapa();
~CMapa();
static int romb_X;
static void Rysuj_mape (int poczatek_X,int koniec_X,int koniec_Y);
};
int CMapa::romb_X;

void CMapa::Rysuj_mape (int poczatek_X,int koniec_X,int koniec_Y)
{
romb_X=32;
}

Teraz możesz spokojnie wywołać tą metode w następujący sposób :
CMapa::Rysuj_mape(arg);

a jak sie nie chcesz bawić w składowe statyczne to musisz zrobić tak jak kolega Marooned napisał ( tworzysz obiekt :
nazwa_klasy Nazwa_Obiektu;
a potem odwołujesz sie do metody tak :
Nazwa_obiektu.Nazwa_metody(arg);
nie wiem jak ci to może nie chodzić , obiekt tworzysz w tym samym bloku co wywołujesz na jego rzecz metode , jak ci to dalej nie chodzi , to napisz jaki wyskakuje błąd )
. Nie masz możliwości wywołania samej metody tak po prostu . Musisz wywoływac ją albo na rzecz jakiegos obiektu , albo poprzez nazwe klasy , tak jak w przypadku zmiennych składowych .

0

Dowiedzialem sie że niechodzi bo nie ma bibliotek i deklaracji w winmain ale niewiem co z tym zrobić i co to jest ?

Moje błędy :
CMapa::CMapa() is not accessible
Destructor for 'CMapa' is not accessible
Undefined symbol 'mapa'

/Edytuj swoje posty - moderator/

0

class CMapa
{
<font color="red">public:</span>
CMapa();
~CMapa();
int poczatek_Y;
int X;
int Y;
int romb_X;
int romb_Y;
int Zapisz (charnazwa_pliku);
int Wczytaj (char
nazwa_pliku);
void Rysuj_mape (int poczatek_X,int koniec_X,int koniec_Y);
};

0

Nie ma już błedu w Kodzie ale jest taki błąd :
CMapa::~CMapa() reformoced for unit1.obj
O co chodzi ?!

1 użytkowników online, w tym zalogowanych: 0, gości: 1