wohin gehört die Declaration von struct ?
-
Hallo,
also jetzt nochmal zum Mitschreiben:
Ich möchte Nichts anderes als Visual C++ mit und ohne .NET lernen.
Das rührt daher das ich ( früher in Delphi ) einige AddOns für den Microsoft Flugsimulator schreibe. Der Name Hal Bryan sollte Dir als MS Dev partner sicher was sagen.So, dazu lese ich ein englisches Tutorial.
In diesem Tutorial sind halt einige Sachen die ich ncih/noch nicht verstanden habe.Dazu habe ich mich hier an das Forum gewendet.
Mein Problem habe ich erklärt und erkläre es gleich nochmal.
Und auch wenn es unüblich ist werde ich ein neues Projekt erstellen , packen und auf meinen Server legen damit es für Euch einfacher wird und ihr nicht immer alles nachbauen müsst.So, jetzt nochmal ... Es geht noch nicht darum das das was ich machen will irgendwelchen Sinn ergibt. Das sind alles nur Tests um irgendwas zu verstehen !
So und derzeit geht es um folgendes :
Eine Classe Form1 mit einer textBox1 und einem button1.
Eine weitere Classe mit einer Funktion die den Text in der textBox1 ändern soll.
Dies soll aber geschehen wenn man auf den Button1 clickt !!Problem :
Zugriff unter den Classen.
hier das Projekt mit Kommentaren drin:
http://www.starflight-virtual.de/c++/klassen_2.rarDas ist doch alles was ich wissen möchte, also wie das geht das ich von der testclasse auf die classe fom1 zugreifen kann und wie ich im onclick des buttons auf die classe zugreife die erst später declariert wird.
Geht das überhaupt ?
Es ist hin wie her, schriebe ich die testclasse vor die Form1 classe, dann geht das eine nicht, schrieben ich die testclasse ganz unten rein, dann geht das ander nicht.Das ist es was ich erklärt haben möchte. Das ist ja nicht so das ich nicht selber suche oder rumprobier, das mach ich doch schon, sonst würde ich ischer nicht auf solche ideeen kommen oder ?
MAtthias
-
Dir wurden bereits alle Links etc. gepostet die Du benötigst um Dein Problem zu lösen.
Das was Dir fehlt an Wissen kannst Du nicht in einem Forum klären. Es sind dermasen schwerwiegende Wissenslücken vorhanden, das man diese nicht im Rahmen einer kurzen Antwort schliessen könnte. Alles was Du gesagt bekommst wird wiederum nicht verstanden weil die Grundlagen fehlen.
Die Links die ich gepostet habe sollten Dich locker 1 Woche beschäftigen können .
Ein Forum ist keine private Nachhilfestunde - das "Zugriffsproblem" bekommst Du mit ein wenig lesen im Thema Klassen selbst hin.
-
hallo,
ok
Matthias
-
Hallo nochmal,
eine Frage noch ... falls ich wiedermal ne Frage haben sollte... was darf ich Euch denn Fragen ?
Matthias
-
Bevor du hier ne Frage reinstellst solltest du dich erstmal einen Monat bemühen die Antwort selbst rauszufinden.
-
hmm,
also ist das nur ein Leseforum .. ok
Also Ehrlich, ich hab doch nun eine konkrete Frage gestellt. Warum ich keine Antwort erwarten darf weiss ich nicht !
Na egal
Matthias
-
ref class zugriff_3//: public klassen1::Form1 { public: void changeTextBox_3() { klassen1::Form1::tbText = "Neuer Text"; }; };
Ich glaube da hab ich irgendwas mit den Zugriffen noch nicht verstanden und wäre Euch sehr dankbar weenn ihr mir das an diesem einfachen beispiel erklären könntet.
Du kannst keine Member-Variable verändern oder irgendeinen MemberFunktion/Property aufrufen, bevor Du nicht eine Instanz davon erstellt hast und Du diese Instanz auch kennst!
Konkreter kann die Antwort auf Deine Frage nicht sein.
-
Hallo,
danke Für die Antwort, aber Du hast meinen Thread nicht gelesen.
Lad Dir bitte nochmal dieses Projekt herunter.
Darin sind alle Fragen gestellt !http://www.starflight-virtual.de/c++/klassen1.rar
Danke
Matthias
-
Vllt. erinnerst Du Dich, das die meisten Beiträge in diesem Thread von mir stammen. Du liest die Antworten nicht.
-
Hallo,
bin grad von Arbeit gekommen.
Hab gestern abend noch ein deutsches Tut über klassen und vererbung gelesen. Das Tut hab ich verstanden !
Habs mit Dev C++ ausprobiert !Jedoch bekomm ich das einfach nicht in Visual Studio gebacken, sorry aber irgendwie ist das hier anders.
Ich habe also versucht eine Classe "test" in eine extra Datei gepackt und versuchte nun auf eine Funktion in dieser klasse zuzugreifen von der Main Class, also der Classe Form1.
Das Problem ist das ich irgendwie die #includes anscheinend nicht richtig setze.
Ich lad jetzt das letze mal dieses neue Projekt hoch.
Könntest Du Dir bitte die Mühe machen und dieses eine Projekt mal so ändern das ich die Funktion "test_Change_Form1_Color" aus dem button1_ am liebsten mit extra Namespace oder dem gleichen, das soll laut irgendeinem Tut das ich mal gelesen habe so wie es in Proj. ist auch gehen.
Geht aber nicht.Kannst Du mir den Gefallen tun ?
Ich hab sogar in jeder Datei wo ich nicht genau weiss was richtig/falsch ist
"/// ???" reingemacht, damit du nicht zu viel suchen must. Wenn wir jetzt wieder anfangen uns das Problem gegenseitig zu erklären brauchen wir in diesem Thread oder in einem neuen noch x seiten.Also darum die bitte hier
www.starflight-virtual.de/c++/WA_01.rar
nur einmal reinzuschauen . dann hab ich ne Vorlage und dann komm ich klar.Danke
Matthias
-
Schau Dir noch mal das Kapitel an, das sich um Instanzierung der Klasse dreht.
[/cpp]Form1::BackColor = System::Drawing::Color::Blue;[cpp]
Welche der Instanzen willst Du hier die Farbe zuweisen ?
-
http://www.rothmichael.de/cpp/STF-DIR/WA_01.zip
Bitte schön. Es wird Dir nichts nützen. Dein Projekt zeigt nur, das Du von dem was Du (ggf.) liest nur wenig verstehst bzw. nicht genug verinnerlichst.
-
Hallo,
ich danke Dir !!
"ref class Form1;"
Werd mir das heute nochmal raussuchen und näheres dazu lesen, aber ich glaube das ist so eine Art prototype der Classe form1, also damit die Classe bekannt ist in der datei test.h.
Ausserdem auch der parameter der test_change_color... funktion.Allerdings steht davon nichts in irgendwelchen Tutorials !
Ich finde hier immer nur welche in denen es um C++ geht, auch um CLI, aber dort wird nicht darauf eingegangen wie das ganze in VISUAL STUDIO aussieht. In Dev C++ oder VC++ 6 sieht das ganze nämlich ganz anders as.
Wie soll man das denn dann lernen ohne einen netten Helfer wie Dich ?Ich danke Dir !!!
Bei weiteren Fragen werde ich jetzt einen neuen Thread aufmachen.
-
Ähm,
was hat standard C++ aussehen mit der IDE zu tun ?
Definition deklaration forwarddeklaration namespace und instanziieren sind sehen bei jedem Compiler identisch aus.In den Tutorials steht davon nicht viel, weil es totale Grundlagen sind und es dafür eigene tutorials geben wird.
Das ref class Form1 ist eine forwarddeklaration und war nötig um die verschachtelung aufzulösen die Du mit Deinem Beispiel gebaut hast.
-
Hallo,
in VC++ 6 zum Beispiel landet man, wenn man ein button_onclick() ereignis erstellt, nicht in der Form1.h sondern in der Form1.cpp !!
Das ist schon ein großer unterschied !Es lag ja nicht nur an dem Aufruf:
void test_Change_Form1_Color(Form1 ^ form); !
Hatte dort genauso eine stink normal funktion nehmen können,
sagen wir mal void test(){ MessageBox("Hallo") }; <-- Syntaxfehler, ich weiss !!Es ging ja darum in dem button1_onclick ereignis auf die CLASSE TEST zuzugreifen ! Das hab ich ja nicht hinbekommen !
Matthias
-
Die Fehler die Du da machst sind aber nicht wegen der Art die der Wizzard verwendet um COde einzufügen, das sind einfach wissenslücken in den Grundlagen.
IMHO ist es ein sehr sehr kleiner unterschied ob man in der Form1.h oder Form1.cpp landet. Es hindert Dich nämlich niemand daran den Code nach definition und deklaration zu trennen. Auch werden dadurch die C++ Regeln nicht neu definiert.
-
STF-DIR schrieb:
in VC++ 6 zum Beispiel landet man, wenn man ein button_onclick() ereignis erstellt, nicht in der Form1.h sondern in der Form1.cpp !!
Das ist schon ein großer unterschied !In VC8 ist das genauso!!!
Du bringst mal wieder MFC (native) und .NET durcheinander!!!
-
Was ??
Wenn ich in VC ++ 6 einen Button auf die Form ziehe und dann doppelt drauf klicke, dann lande ich ganz sicher in der form1.cpp und nicht in der form1.h.
Ja, das ist MFC und nicht .NET aber das hat doch mit dieser Tatsache nichts zu tun !Es gibt nunmal derzeit noch keine Bücher oder Anfänger Tutorials in deutsch zu VS 2005 !
Das ist auch ne Tatsache, jedenfalls hab ich nohc keine gefunden.
Vielleicht hast Du ja welche im petto ?Matthias
-
Es ist eine Tatsache das Du zu faul bist die Grundlagen zu lernen.
Deswegen wirst Du immer an kleinigkeiten wie definition in Headern scheitern.Buchtips ?
Klar:
Die C++-Programmiersprache | ISBN: 382731660X
Modernes C++ Design | ISBN: 3826613473
Mehr effektiv C++ programmieren | ISBN: 3827312752
ISBN: 3287313058
Visual C++ | ISBN: 3827318696
Microsoft-.NET-2.0-Crashkurs | ISBN: 3860639870
Programmierung mit der .NET-Klassenbibliothek | ISBN: 382732128X
-
Jetzt reicht es aber,
was denkst Du wer Du bist und was ich hier mache ?
Nicht jeder programmiert in C++ ( allgemein ) schon ne Ewigkeit, nicht jeder begreift vielleicht alles so schnell wie Du, nicht jeder kann alles von Anfang an !Was beschwerst Du Dich denn wenn ich hier mal ne Grundlagenfrage stelle ?
Wenn Du nur rummeckern willst, dann spar Dir deine Klugscheißerantworten !Ich versuche hier etwas zu lernen und brauche sicher keinen der hier ständig nur am meckern ist und mir sagt das ich mit den Grundlagen beginnen soll. Das weiss ich auch und das versuche ich ja auch. Das Tutorial was ich hier habe behandelt die Grundlagen ! Es sieht nur alles ein wenig anders aus als in dem niegelnagelneuen VS 2005 ! Damit hab ich eben meine Probleme. Wenn Du das nicht verstehen kannst, dann spar Dir die Antworten.
Die Antworten die Du hier schreibst helfen mir kein bischen weiter, deswegen ist auch der Thread hier soewig lang, weil ich hier jedesmal von neuen das gleiche schreibe und einfach keine Antwort bekomme obwohl das doch so einfach gewesen wäre!
Siehe die Antwort von Knuddelbär, der versteht das wenigstens ein bischen.So, zu den Büchern ... die drehen sich nicht um VS 2005 sondern um VC 6. Die Bücher für das NEUE VS 2005 sind nämlich noch nicht auf dem Markt.
Ich will jetzt nicht erst C++ lernen um dann wieder von vorne mit VS 2005 anzufangen ! Ich will das eben gleich mit der IDE von VS 2005 lernen, die war teuer genug und ich hab sie nunmal !
( das um deiner nächsten Antwort vorzugreifen ! )@Knuddelbär
So, jetzt bin ich gerade dabei mir das von Dir anzuschauen und grübele gerade warum es in der Form1.h heir keinen Aufruf der funktion test_change_color gibt ???#pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e); }; }
Die funktion ist doch leer. Wies macht der compiler da überhaupt irgendwas ???
Hmm...
Matthias