wie deklariert man eine eigene klasse bei microsoft viusal c++ express in einer windows forms (CLR)?

hi,
ich habe mit viusal c++ express ein windows forms projekt erstellt und möchte dort eine selbst deklarierte klasse benutzen, die im gesamten projekt verwendbar sein soll. ich weiß aber nicht recht wohin.
ich besitzte neben anderen komischen dateien "projektname.cpp" (main) und "Form1.h". "Form1.h" ist wohl für das gui und in dessem code möchte ich eine klasse aufrufen (klick auf einem button). wo muss ich jetzt die klasse hinschreiben. wenn ich sie oben in den Formscode schreibe hagelt es errors, wenn ich sie in die main.cpp tue kann ich es fehlerfrei compilieren, aber wenn ich sie benutzen will, wird sie nicht gefunden.
ich merke gerade, dass überhaupt keine variablen gefunden werden, die ich am anfang von main.cpp geklariere.
wo muss das denn hin ?

ich glaube zwar nicht, dass es hilft, weil es auch mit std variablen nicht funzt, aber ich nenne trotzdem mal die klasse:
class knoty
{
public:
knoty(string wert);
string informy = "";
knoty *rechty = 0;
knoty *linky = 0;
};
knoty::knoty(string wert)
{
informy = wert;
}

2010-03-19T09:50:47Z

gleiches problem mit funktionen, wo müssen die definiert werden im code ?

2010-03-19T13:43:54Z

@ Paul C
die knoty.cpp müsste man dann auch noch irgendwo includen, aber das macht man nur der übersichthalber. es ist ja egal, ob ich den code direkt reinschreibe oder ihn in eine datei schreibe und die dann per include da rein geschrieben wird. ich habe es aber probiert und es geht nicht.

wenn ich ganz oben in den code eine einfache integer variable global deklariere
int foo = 0;
oder
int *foo = new int;
und diese dann irgendwo benutzen will kommt immer

Fehler 2 error C2065: 'foo': nichtdeklarierter Bezeichner

es liegt also nicht nur an klassen, ich weiß allgemein nicht wo ich allgemeine codeteile reinschreiben soll.

Paul C2010-03-19T12:43:38Z

Beste Antwort

Unter .NET programmier ich eigentlich nur C#, deshalb kann ich dir das nicht 100%-ig beantworten, aber in klassischem C++ ist es so, dass du eine knoty.h Header-Datei erstellst, in der die Klasse definiert wird, also der Klassenrumpf wie oben

class knoty
{
public:
knoty(string wert);
string informy = "";
knoty *rechty = 0;
knoty *linky = 0;
};

(obwohl nach klassischem C++ die Zuweisung in der Klassendefinition afaik nicht möglich ist.) und dann erstellst du eine knoty.cpp Quelltextdatei, in der alle Funktionen definiert werden, also in deinem Fall z.B.

knoty::knoty(string wert)
{
informy = wert;
}

Um die Klasse jetzt z.B. in deiner main.cpp nutzen zu können fügst du am Anfang der Datei ein

#include "knoty.h"

ein und du solltest die Klasse nutzen können.

Hoffe ich konnte helfen.
Cheers, Paul