[Visual C++ 2005]Problem z formami i include


(Masterslynx) #1

Ok, to na tym forum też spróbuje, może tu mi coś powiecie ;p

Więc tak.

Mam główny programik nazwany np. Form1, do tego jest wrzucona nowa klasa (forma) nazwana Form2 poprzez include.

Teraz z Form1 nie ma żadnego problemu z obsługą form2. Natomiast jak dodam w Form2 #include "Form1" to program pierwszy (Form1) się kompletnie sypie.

W głównym programie nie widać w ogóle Form2, zero operacji na obiektach, nawet nie można utworzyć wskaźnika do głównego okna form2. I to jest dla mnie zagadka.

Co jest nie tak ? Jak mam się odnieść z Form2 do Form1.

Jako że były już dziwne odpowiedzi na innych forach, postaram się utrudnić (sprecyzować). Mianowicie jest jeszcze 3 klasa która zawiera w sobie jedynie konstruktor nowego typu danych, np. po prostu "data", a w form1 (po wrzuceniu do include tej nowej klasy) jest stworzona zmienna tego typu czyli "data ZMIENNA_DATA". I teraz z form2 muszę uzyskać dostęp do tego tej zmiennej (nie może być tworzona nowa zmienna tego typu danych).

Jak ktoś ma jakieś pytania to śmiało, często piszę chaotycznie i gubię istotne elementy.


(somekind) #2

Przede wszystkim jaki to język? C++ czy C++/CLI? (Inaczej - jaki typ projektu utworzyłeś w VS?)


(Masterslynx) #3

CLI


(somekind) #4

Na początku pliku Form1.h powinieneś mieć:

#include "Form2.h"

Tak BTW to musisz się męczyć w tym nienormalnym języku?


(Masterslynx) #5

Tam akurat jest coś takiego jak plik nagłówkowy stdafx.h do którego wrzuca się wszystkie inne, a potem daje tylko include "stdafx.h" i jest dostęp do wszystkich, tak więc include Form2.h mam w tym pliku, a dzięki pragma once nie ładuje po kilka razy tych samych plików.


Poza tym nie czytałeś. Pisałem, że mam include. Wszystkie podrzędne włączone przez include do nadrzędnego, ale chcę bym z podrzędnego mógł pracować na danych nadrzędnego, czyli jakoś go "zincludować", a problem jest w tym, jak wyżej pisałem, że wtedy główny program wywala komplet błędów, że nie widzi podrzędnych, jakby nie były dodane przez include. Nie wiem, może jest jakaś dyrektywa do tego czy coś.... on musi coś plątać, bo gdy w podrzędnym chcę korzystać z nadrzędnego to nadrzędny nie może korzystać z podrzędnego... dość dziwne, a wywoływanie poprzez przestrzeń nazw i klasę główną (bo intellisene sam proponuje coś takiego) też nie działa, nie pamiętam już dokładnie dlaczego, jakiś error był.

A co proponujesz innego ?


(somekind) #6

Jeśli jesteś pewien takiego działania include, to ok. Ja tylko napisałem, jak ja to robię, żeby działało. Jednakże preferuję języki, które takich udziwnień jak pliki nagłówkowe nie posiadają.