c++/cli: program nie widzi moich klas

0

Piszę grę "Warcaby" na zaliczenie i pojawia mi się taki problem:
Stworzyłem 2 klasy, Cpionek i Cdamka, chce żeby po kliknięciu na jeden z buttonów (szachownica jest z buttonów) program zapisywał jego lokację w zmiennych w danej klasie, żeby móc potem na tych danych operować. W pliku form1.h deklaruję klasę p1

#pragma region Windows Form Designer generated code

  void InitializeComponent(void)
  {
  	Cpionek p1;

...

a następnie dla eventu uruchamiam funkcję.

private: System::Void button41_Click(System::Object sender, System::EventArgs e) {
p1::Ruch(LocationX,LocationY);
}

dostaję 4 błędy:

'p1' : is not a class or namespace name
'LocationX' : undeclared identifier
'LocationY' : undeclared identifier
'Ruch': identifier not found

wygląda na to, że program po prostu nie widzi mojej klasy, wiec albo źle albo w złym miejscu ją zadeklarowałem, oprocz tego te współrzędne... Można prosić o mały support?

0

Tak, zacznij od pisania w czystym C++, od hello-world i podobnych. Tworzysz zmienną lokalną i próbujesz się do niej odwoływać poza metodą, dla której jest lokalna. Do zawartości obiektu odwołujesz się poprzez operator zasięgu, właściwy jedynie dla przestrzeni nazw/klas.

0

w czystym c++ pisałem od października, ale przejście na visuala troche sprawia mi kłopoty. Domyślam się, że zasięg zmiennej jest nieodpowiedni i muszę użyć globalnej albo odpowiedniej lokalnej, miałem nadzieję, że Ty albo ktoś mi powie jak to zrobić, żeby było tip top

ps. Nie napisałeś mi nic o tym Location, a z tym też mam problem bo niemoge nigdzie znaleźć odpowiedniej komendy która by mi przypisała do zmiennej te parametry

0

nie na 'visuala' tylko na c++/cli

czy na poczatku pliku który wali błędami masz #include ktory dolacza deklaracje klasy P1? kompilator w ogole nie wie czym jest ten identyfikator, nie dziwne wiec czemu i 'ruch' nie moze odnalezc. sprawdz czy definicja klasy P1 jest prawidlowo dolaczana. jezeli masz odpowiedni #include, sprawdz czy jakies #pragma once Ci go nie wylaczaja. Jezeli tak wlasnie jest - zapomnij o #pragma once i zapoznaj sie z 'typowym' ukladem pliku .h: http://4programmers.net/Forum/viewtopic.php?id=162017

co to jest to to Twoje LocationX i LocationY ? najwyrazniej nie sa to pola klasy formatki. jezeli sa one zadeklarowane gdzies indziej, i jezeli naprawde nie rozumiesz czemu kompilator ich nie widzi, wydaje mi sie ze musisz jeszcze troche popracowac nad tym "od pazdziernika"

0

z location przekombinowalem wiec zmienilem to na inne rozwiazanie wiec tu juz nie ma problemu. zastosowalem to ifndefine, troche pomoglo, poza tym jeszcze znalazlem pare literowek, ale niestety dalej klapa gdyż teraz prześladuje mnie:

unresolved tocken
unresolved symbol

wiem, że powinienem a takiej sytuacji przepatrzeć wszystkie nazwy w poszukiwaniu literowek, tym sie już zająłem, napisałem też definicje wszystkich funkcji, niestety nie pomogło, jest jeszcze jakiś sposób na to?

0

szukaj dalej, gdyz naprawde jakas nazwa implementacji w pliku .cpp Ci sie nie zgadza z deklaracja w pliku .hpp, albo w ogole zapomniales jakies metody/funkcji zaimplementowac i istnieje tylko jej deklaracja w jakims .h (uwazaj na parametry funkcji!), albo zapomniales umiejscowic fizycznie jakeigos static-field'a, albo nie dolaczyles .lib od jakiejs biblioteki, itp..

0

pare rzeczy było nie wporządku, przede wszystkim źle korzystałem ze static, teraz program się uruchamia ale chyba wkradł się jakiś błąd logiczny, w każdym razie, ta sprawa jest zamknięta, dzieki za pomoc.

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