Problem ze stworzeniem obiektu nowej klasy.

0

Witam,

piszę program w Microsof Visual Studio 2010 c++ windows form application.

Mam tak:

główny kod źródłowy w którym jest main.

i w plikach nagłówkowych mam: Form1..h w której ustawiam wszystkie formy ich funkcje itd.

Taki mam main w głównym kodzie źródłowym:

 

int main(array<System::String ^> ^args)
{
	// Enabling Windows XP visual effects before any controls are created
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false); 

	// Create the main window and run it
	Application::Run(gcnew Form1());

	return 0;
}


czyli odpalam okno formy.

Teraz chciałbym utworzyć klasę, która zarządzała by pewnymi danymi, które wykorzystywane byłyby przez różne formy.
np. klasa poda pewne dane , które muszą się wyświetlić w polu tekstowym formy.

Więc klikam na projekt i dodaję nową klasę, tworzy się.

i teraz chciałbym stworzyć obiekt tej klasy w kodzie odpowiedzialnym za formy więc w Form1.h, jednak nie mogę tego zrobić nie wiem dlaczego. Jak mogę to zrobić?

gdy robię standardowo:

odpowiednia_klasa *ob1 = new odpowiednia_klasa();

to wyskakuje, że Odpowiednia_klasa nie jest zadeklarowana!

dodam, że w main w głównym pliku żródłowym tez nie mogę stworzyć obiektu tej klasy.

Proszę o pomoc.

0

Język, w którym piszesz to nie C++, a C++/CLI. To nie jest to samo. Warto wiedzieć gdzie leżą różnice i jakie są podobieństwa. A dopiero potem zabierać się do pisania programów.
Tak na oko, brakuje dołączenia odpowiednich nagłówków, czyli wychodzi na to, że C++ też nie znasz.

0

a jak bym chciał napisać program z pomocą biblioteki qt to tez bym pisał jakąś odmianą c++?
pewnie głupie pytanie ale prosze o odpowiedź.

0

Nie, aczkolwiek w QT jest specjalny preprocesor. Mimo tego, to dalej C++.

0

Mozna stworzyc w C++/CLI obiekt tak jak w normalnym C++ tylko trzeba pamietac, zeby ten obiekt usunac, bo obiekt tworzony za pomoca gcnew nie musi byc usuwany ze sterty, bo sie sam usunie.
Zauwaz, ze twoja klasa jest umieszczona w przestrzeni nazw, wiec przy tworzeniu obiektu musisz sie do niej odwolac, bo inaczej kompilator nie wie co to za klasa, dla niego to calkiem inna definicja, wiec:

przestrzen_nazw::klasa* obiekt = new przestrzen_nazw::klasa;
// lub 
przestrzen_nazw::klasa^ obiekt = new przestrzen_nazw::klasa;

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