wohin gehört die Declaration von struct ?
-
Hallo,
ich hab in der Hilfe zu dem erzeugten Fehler des Formdesigners keinerlei Hilfe gefunden. Es gibt lediglich viel Text zum Thema VCCodeComponent (oder wie das hies) aus dem man dann mit Transferwissen etwas anfangen kann.
Warum Du auf der Hilfe nicht auf der passenden Seite gelangst weiß ich nicht. Da ist die IDE etwas eigen. Bei mir wird, wenn im Fehler/Warunungsfenster ein Thema steht zu das keine Hilfe gefunden wird, die Hilfsseite für die Liste selbst aufgerufen. Warum Du zur Typumwandlung gelangst ka, da kann Dir aber Microsoft helfen.
Die Seite die ich Dir nannte findet man, wenn man nach Fehlermeldungen Formdesginer googelt bzw. die Hilfe danach durchsucht. Es gibt oft die Information nicht direkt sondern man muss sich diese auf Umwegen zusammen suchen.
Zur Textbox (hab ich wohl versehentlich wegeditiert in einem der Beiträge).
Auf die schnelle fällt mir nur \r\n ein im Text.Mach mal folgendes:
Dialog auf -> Textbox makieren -> F1 drücken.Nach unten Scrollen zu Siehe auch und folgenden Link anklicken:
Gewusst wie: Anzeigen mehrerer Zeilen im TextBox-Steuerelement in Windows Forms
-
Hallo,
hmm, ist schon komisch mit der Hilfe.
Könnte aber vielleiucht auch mein Fehler ( wiedermal ) sein. Ich habe zuerst die Express Versionen installiert, also C++ un C# und danach auch noch Borland Developer Studio. Alle installieren ein .NET Framework, alle verlangen ja auch zugriff auf die Dateien. Vielleicht liegts daran.
Ich werd vioelleicht mal alles runterschmeißen und nochmal sauber installieren.zur Hilfe noch ... das ist es eben. Ich bin da von Delphi vielleicht ein bischen verwöhnt. Da musste man sich nichts "zusammensuchen" oder so. F1 drücken und man bekommt da auch wirklich Hilfe zu jedem Befehl und wenn nicht, dann hat man sich verschrieben oder den Befehl gibts gar nicht.
Aber daran gewöhne ich mich...bitte um Nachsicht.Die Frage mit der TextBox ist genau so ein Beispiel .. nicht genug/genau genug gelesen.
Nun aber zu dem test projekt nochmal kurz. Hast Du das mal aufgerufen ?
Steht das da alles an der richtigen stelle oder würdest Du das irgendwie anders machen ?
Wie schon erwähnt...ich blicke bei der Dateistrucktur noch nicht richtig durch zu was die alle gut sind ?
stdafx.cpp und stdafx.h z.B. braucht man die später erst oder zu was sollen die gut sein ?Wenn ich dashier aus der stdafx.h
// stdafx.h : Includedatei für Standardsystem-Includedateien // oder häufig verwendete projektspezifische Includedateien, // die nur in unregelmäßigen Abständen geändert werden. #pragma once // TODO: Hier auf zusätzliche Header, die das Programm erfordert, verweisen.
richtig verstehe hätte ich die struct.h auch hier einbinden können oder ?
Mach das nun einen Unterschied oder ist es egal oder wie ist das ?Hab das jetzt nicht ausprobiert....bin aber dabei !
Danke
Matthias...es wird doch
-
Nachtrag ...
wo wird denn eigentlich die stdafx.cpp geladen / includet ?
Ich hab in der AssemblyInfo.cpp nur die stdafx.h gefunden.Wioe gesagt, ich versteh den zusammenhang nicht
Matthias
PS.: textBox1->AppendText(t.str+"\r\n"); .. geht herforragend !! danke
-
Hallo,
nochmal zur Hilfe, da schein wirklich irgendwas nicht zu stimmen.
Wenn ich AppendText markiere und F1 drücke lande ich hier :
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.de/cpref8/html/M_System_IO_File_AppendText_1_16219e3a.htmist das normal ? Hat doch gar nichts mit der TextBox zu tun.
unten steht aber auch keine Alternative drin. Sicher kann man jetzt AppendText links zum suchen eingeben....is klarWenn ich allerdings textBox1->AppendText markiere lande ich hier :
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.de/cpref8/html/M_System_IO_File_AppendText_1_16219e3a.htmin der Online Hile auf MSDN2....komisch irgendwie
Matthias
-
Daran wirst Du Dich gewöhnen müssen. Auch im .Net Framework allgemein, da sucht man sich nen Wolf. Oft landet man dann im Forum weil man einfach nichts findet oder die Suchbegriffe fehlen. Es gibt dann den Suchbegriff und man sucht weiter damit.
Auch wirst Du in C++ an einigen Stellen unwissen akzeptieren müssen. Es gibt oft A das zum Verständnis B benötigt. B wiederum braucht zum vollendeten verständnis A. So muss man erst mal bei einem von beiden mit ner Lücke leben.
.cpp Dateien werden nicht includiert. Jede .cpp wird vom Compiler übersetzt und zu einer Objektdatei gemacht. Die .cpp wissen nichts voneinander. Erst der Linker bringt die Objekte zusammen. (So wäre der nächste Tipp: Wenn sich mal etwas nicht kompilieren lässt, Unit für Unit einzeln Übersetzen. Wenn alles richtig ist, muss sich jede Unit einzeln übersetzen lassen).
Jede dieser Units muss ja aber die Informationen herbekommen was Form1 ist, was sPerson ist etc. Diese Informationen stellt man mit der Deklaration zur Verfügung die man üblicherweise in einen Header packt.
stdafx nimmt beim VC IMHO eine sonderstellung ein, da kommt alles rein was alle sehen sollen. So wird Dir sicherlich aufgefallen sein, das die stdafx.h überall includiert wird. Hinzu kommt, das die vorkompilierten Headerdateien durch stdafx.h makiert werden (details kann ich Dir nich sagen, nie mit auseinandergesetzt).
Insgesammt ist es ein sehr großes Thema für .cpp .h definition und deklaration.
Situationsbetrachtung:
Ausgangspunkt:
sPerson.h enhält folgenden Code:
ref class sPerson { System::String ^ Name; [...] public: System::Void aufwecken() { if(chef_in_der_naehe() && schlaeft()) schlagen(); else sanft_ruetteln; } }
Wir haben 20 Dialoge von denen 10 mit sPerson umgehen. Wir überlegen uns nun: Packen wir doch sPerson.h per include in stdafx.h - dann hat jeder was von und ich muss mir keine Gedanken machen. Denn wenn der 11. Dialog sPerson braucht, ist sPerson da und ich kann einfach faul sein.
Ok, gemacht getan. Wir sind ja alle faul.
Nun haben wir das Projekt einmal vollständig übersetzt. Wir ändern sPerson nun ab:
ref class sPerson { System::String ^ Name; System::Int16 alter; [...] public: System::Void aufwecken() { if(chef_in_der_naehe() && schlaeft()) schlagen(); else sanft_ruetteln; } }
Wir drücken übersetzen und merken, das der Compiler alle 20 Dialoge übersetzt. Schlussfolgerung: Überall wo ein Header eingebunden wird und sich dieser direkt oder indirekt ändert, muss alles, was diese Informationen per Include zieht (wie gesagt, das kann auch indirekt erfolgen!!) neu übersetzt werden.
Natürlich reicht unser Kuchen nicht und der Compiler arbeitet immer noch. Das dauert uns einfach zu lang, es muss eine Lösung her.
Also sPerson wieder aus stdafx.h entfernen und nur in die Dialoge einbinden, die sPerson wirklich benötigen. Nun das Projekt vollständig übersetzen - fertig.
Nun müssen wir aber noch was an der definition von sPerson ändern. Denn wenn Feierabend ist, wird der Kollege auch geschlagen. Wer will schon nach Feierabend ewig da rumzerren bis der wach wird ?
ref class sPerson { System::String ^ Name; System::Int16 alter; [...] public: System::Void aufwecken() { if(schlaeft() && (chef_in_der_naehe() || feierabend())) schlagen(); else sanft_ruetteln; } }
Ein Druck auf F7 zeigt uns, er compiliert wieder alle 10 Dialoge. Aber warum ? Eigentlich ist es doch egal, der Compiler muss doch in den Dialogen nur wissen, wie die Schnittstelle ausschaut. Der Inhalt ist doch völlig uninteresannt. (Ich hab nie ein Buch über Compilerbau gelesen, aber IMHO wird einfach das Dateidatum/zeit herangezogen um eine Änderung zu erkennen).
So, wir sitzen wieder schmollend vor der Kiste. Kuchen ist alle und Langeweile macht sich breit. Wir haben ja die Schnitstelle bereits abgesprochen und an der Deklaration wird sich so schnell nichts mehr ändern. Aber in der Definition müssen wir noch oft ran, wir sind uns da einfach unschlüssig. Aber so viel Kuchen können wir garnicht essen wie wir Compilerdurchläufe machen müssten.
Was könnte helfen ?
Wir trennen die Deklaration und die Definition. Die Definition kloppen wir in sPerson.cpp und erhalten folgendes:
ref class sPerson { System::String ^ Name; System::Int16 alter; [...] public: System::Void aufwecken(); }
System::Void sPerson::aufwecken() { if(schlaeft() && (chef_in_der_naehe() || feierabend())) schlagen(); else sanft_ruetteln; }
Ab jetzt können wir immer, zur Syntaxprüfung, sPerson.cpp alleine übersetzen und schauen ob alles ok ist uns müssen nich alles Übersetzen.
So, nun sind wir sauer auf unseren kollegen weil der so viel pennt und nix schafft. Also wollen wir den nun immer schlagen und packen die Definition an:
System::Void sPerson::aufwecken() { schlagen(); schlagen(); schlagen(); }
Nun wieder F7 gedrückt und siehe da - es wird sPerson.cpp compiliert und danach geht schon der Linker ans Wek.
Nun haben die Compilerbauer noch vorkompilierte Header erfunden um diesem Effekt entgegen zu treten. Soll heissen: So extrem ist es nicht mehr wie vor 10 Jahren. Leider wird dadurch die Abhängigkeit der Dateien ständig unter den Tisch gekehrt und nurnoch rumgemurkst.
Das war jetzt 1 Aspekt der .cpp und .h Dateien. Es gibt viele weitere die man berücksichtigen muss / sollte / kann. Templates, inline um mal zwei wichtige Themen genannt zu haben. Auch sind Namespace über die Jahre hinweg ein sehr wichtiges Werkzeug geworden. Forwarddeklarationen gehören zu dem .h und .cpp Spiel ebenfalls hinzu wie Mehrdeutigkeiten.
Warum nun MS alles in den Header packt weiß ich nicht. Ich denke, da hatte man keine Lust die .cpp auch noch zu parsen. Ich persönlich trenne nach wie vor streng zwischen deklaration und definition.
Fazit:
Im Header möglichst nur Deklarationen haben (wie immer gibt es ausnahmen) und im Header die Definitionen. Nur das includieren was wirklich benötigt wird. using namespace nur in .cpp Dateien . Und schon muss der Compiler weniger ackern, die möglichen Fehler werden automatisch weniger und das Design wesentlich übersichtlicher.
Und nun bete ich, das ich Definition und Deklaration nicht durcheinander geschmissen hab
Ahja, eine Definition ist auch gleichzeitig eine Deklaration.
Pps.: Der Text hat jetzt 40 Minuten gebraucht und es war nur ein ganz kleiner Ausflug zum Thema .cpp und .h. Vieles was man dazu noch sagen könnte sind Nebenprodukte anderer Themen wie forwarddeklaration, templates und inline sowie export etc.
Du wirst immer , wenn Du fertig bist, alles neu machen wollen, weil Du weisst wie es besser gegangen wäre.
Manchmal ist es aber auch einfach die wirtschaftlichkeit die einen Zwingt. Ich habe ein Projekt mit 20 Dialogen, 30 Datasets und viele Hilfsklassen . Da sind z.B. 7 Dialoge identisch vom Grundaufbau her. Es hat mich angekotzt das ich alles an Funktionalität neu machen musste. Ich hätte am liebsten den Grundaufbau gemacht und dann den Dialog vererbt.
Irgendwann kam genug KnowHow um das etwas generischer zu gestalten. Events eintragen etc also nurnoch die Oberfläche neu gestalten. Aber das führte dann dazu, das ich die Menüs , ToolboxButtons und DataGridViews hätte alle per Hand setzen initialisieren etc. hätte müssen und den Formdesigner nicht hätte nehmen können.
Nach einer Weile und vielen sonderwünschen sehen sich die Dialoge nurnoch grob ähnlich und gleichen sich nurnoch in etwa 40% der Funktionen. Hätte ich alles zusammen gelegt hätte ich lange daran arbeiten müssen das wieder zu zerpflücken.
Also kurz: Der Kunde zahlt nicht den Idealsten Quellcode und man muss leider manchmal mit unschönheiten leben.
-
FileAppend gibt es einfach in vielen Methoden.
Such nach dem Hauptelement und gehe über die Member.
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.de/CPref17/html/M_System_Windows_Forms_TextBoxBase_AppendText_1_16219e3a.htm
-
Hallo,
danke Dir sehr für die echt erschöpfende Antwort !
Ich les mir das nachher nochmal GANZ genau durch ... muss erst mal Abendbrot machenWas ich beim "überfliegen" gerade nicht gesehen habe sind die sogenannten prototypen von eigenen funktionen.
Ich hab das nur mal in anderen Projekten gesehen, gehört und auch was davon im Tutorial gelesen.
Jedoch kann man ja mit .NET keine funktionen mehr außerhalb von Classen definieren oder hab ich da was falsch verstanden ?
Dann geht das ja mit den Prototypen gar nicht mehr so oder bin ich jetzt völlig auf dem falschen Dampfer mit den Prototypen ?Dank Dir nochmal für die Antwort...habs mir glatt ausgedruckt !
Matthias
-
Ich sehe keinen Grund warum man in .Net keine freie Mehtoden erstellen können sollte, zumal diese durchaus als Funktoren dienen könnten.
So lässt sich folgendes verwenden:
System::Void helper(System::String^ t) { t = "Hallo Welt"; } System::String ^t = gcnew System::String(""); helper(t);
IMHO ging es darum .Net Objekte global anzulegen. Warum ? Ka. Ich nehme an, es würde probleme mit dem Aufräumen der Objekte geben da vermutlich nach C++ Regeln die Objekte zu spät bzw. undefiniert zerstört werden würden.
Hier kann uns eventuell Jochen helfen.
-
Ich muss zugeben: Ich hab den Thread jetzt nicht ganz verfolgt...
Was ist genau die Frage? Warum man ref-Obejekte nicht global instanziieren kann?
Das liegt daran, dass das initialiseren nicht so wie bei der CRT funktioniert (wo es "globale" initializer gibt) sondern jetzt "deterministisch" an der jeweiligen Klasse gebunden ist (was IMHO viel schöner ist, da die Reihenfolge ersichtlich ist; im gegensatz zu C/C++).ref class A { }; A ^a; // erzeugt error C3145: 'a' : global or static variable may not have managed type 'A ^' ref class B { public: static A ^a; // ist ok, und hat den gleichen effekt wie das obige... };
-
Jup,
genau darum ging es, damit da nicht einfach eine "vermutung" stehen bleibt
Danke schön!
-
Hallo,
sorry für die verspätete Antwort, bin grad rein.
Naja, es ging eigentlich um vieles:
1. Warum geht nach diesem Code der Designer nicht mehr ?
(Komplett neue Windows Forms-Anwendung )Form1.h:
#pragma once ref struct test2 {}; namespace test { . . .
Danach geht der Designer nicht mehr ???
Warum das war die Frage...die vorläufige Antwort von Knuddelbär den code
ref struct test ... in eine extrah *.h datei zu schreiben und diese zu includen. Das geht auch, beantwortet aber die Frage noch nicht ausschöpfend.
Komischerweise geht value struct test ... an genau der gleichen stelle. Da geht der Designer wieder ( Form1.h schliessen und neu öffnen sonst gehts nicht ! )Dann gings um die Hilfe, ich lande manchmal an merkwürdigen Seiten wenn ich F1 drücke, die gar nichts mit dem Thema zu tun haben.
Da denke ich aber hilft eine neue installation bei mir.Dann gings als letztes um die Prototypen von eigenen functionen. Da hab ich viele Beispiele ( unmanaged wohlgemerkt ! ) bei denen die in den Header Dateien stehen. Das ist ja jetzt wohl irgendwie nicht mehr so. Was ich ein bischen komisch finde ist das Functionene anscheinend nur noch in Classen stehen dürfen ??
Naja und zu guter letzt ging es noch um die ganzen Dateien die automatisch angelegt werden wenn man ein neues Windows Forms-Anwendung erstellt.
Da steige ich noch nicht ganz durch.
Da hat aber Knuddel... schon nen sehr guten Anfang vermitteln können .. Danke nochmals !So, das als kleine Zusammenfassung
Matthias
-
1. Warum geht nach diesem Code der Designer nicht mehr ?
Wie bereits gesagt: Microsoft fragen, das wird Dir hier erst mal keiner erklären können , die Fehlermeldung meldet, das VCCodeModel noch nicht fertig ist. Leb mit ;o)
Die Prototypenfrage ist beantwortet, gerade mal 2 Posts über Deinem.
Was die Datieen betrifft weiß ich noch nicht genau was Du willst ?! In der Hilfe gibt es irgendwo eine Liste mit beschreibung welche Datei für was gut ist und irgendwo stehen dann auch die Dinge wie .ncb ist die Intellisense Datenbank.
Ich persönlich lebe damit, das ich nicht genau weiß was der Compiler alles an FIles anlegt zumal sich das von Version zu Version ändern kann.
-
Hallo,
zu 1 ja, damit hab ich mich erst mal abgefunden. Jochen hatte nur danach gefragt und so habe ich es nochmal mit reingeschrieben, auch in der Hoffnung das er vielleicht eine andere Erklärung haben könnte da er MS Dev ist.
Die Prototypenfrage ist beantwortet, gerade mal 2 Posts über Deinem.
Da bin ich noch am grübeln ... das hab ich noch nicht nachvollziehen können weil ich wieder nicht genau weiss woo ich den Code von Jochen hinschreiben muss ?
Ich denke aber das der in die Classe muss oder ?
Habt Ihr ja geschrieben das die ref nur in classen geht. Den Vorteil davon verstehe ich jetzt noch nicht worum ich mir aber auch keine Sorgen weiter mache da das sicher noch kommt wenn ich ein bischen mehr Erfahrung gesammelt habe.Das mit den Dateien ... so bin ich eben und jeder Mensch ist eben auch eine Eigene Classe ... ich will sehr oft alles bis ins kleinste verstehen ... dazu gehören eben auch diese blöden dateien.
Ich probier damit gerade rum
Matthias
-
Warum der Designer nicht mehr geht? Steht das nicht in der Fehlermeldung?
The class Form1 can be designed, but is not the first class in the file. Visual Studio requires that designers use the first class in the file. Move the class code so that it is the first class in the file and try loading the designer again.
-
Jochen Kalmbach schrieb:
Warum der Designer nicht mehr geht? Steht das nicht in der Fehlermeldung?
The class Form1 can be designed, but is not the first class in the file. Visual Studio requires that designers use the first class in the file. Move the class code so that it is the first class in the file and try loading the designer again.
Hallo,
ich versteh jetzt aber wirklich langsam die Weelt nicht mehr !
Woher hast Du denn DIESE Warnung ??Bei mir sieht das folgendermaßen aus:
Ich für die folgenden Zeilen direct nach #pragma once in die Form1.h ein
#pragma once ref struct test3 { };
MEHR NICHT !!!
Dann erhalte ich , wenn ich auf die Registrierkarte Form1.h[Entwurf] gehe, folgende Warnung :
Warnung 1 Either VCProject or VCCodeModel is not ready yet. Please close designer and try again. 0 0
So, und die sieht ja wohl doch etwas anders aus als deine oder ?
Ich hab auch das deutsche MS Visual Studio 2005 ! ( nur weil deine Fehlermeldung ja sogar in deutsch ist ! )SO, wenn ich nun die Warnung aktiviere, also markiere so das er blau ist, und dann auf F1 drücke komme ich auch in keiner Weise auf eine Seite auf der ich deinen Text den Du da irgendwo her hast !
Ich hab davon jetzt extra bildchen gemacht damit ihr das mal seht. Irgendwas stimmt doch da mit meiner IDE nicht oder was soll denn das sonst sein das ich hier laufend ganz andere Medlungen als Ihr bekomme ?
http://www.starflight-virtual.de/c++/image_1.jpg
http://www.starflight-virtual.de/c++/image_2.jpg
http://www.starflight-virtual.de/c++/image_3.jpgSo, sicher bekomm ich jetzt gleich wieder zunder von Euch weil ich so forsch geschrieben hab.
Matthias
-
Fazit: Du DARFST keine Klassen/Structs oder sonstwas *oberhalb* der "Form"-Klasse einfügen!
Die Form-Klasse muss die *erste* in der h-Datei sein, sonst findet der Designer die Klasse nicht, die er Designen soll.
Verlagere Deine sonstigen Klassen/Structs usw. in eine separate h-Datei und binde diese ganz oben mit#include "meineh-datei-h"
ein
-
Hallo,
ja das hatten wir doch schon.
Mir ging es aber in dem Post AUCH darum was mit meiner IDE los ist ?
Also ob da was falsch installiert sein könnte weil ich nen VÖLLIG anderen Fehler bekomme als Du und auch Knuddelbär !Das hast Du in meinem Post sicherlich überlesen, denn das war/ist ja das eigentliche Problem.
Matthias
-
...Nachtrag nochmal zu den Dateien...
Ich hab mal ein Projekt gemacht und hochgeladen.
Darin sind einige Kommentare mit Frage die ich mir nicht wirklich beantworten kann.
Vielleicht kann man besser nachvollziehen wo meine Probleme liegen :http://www.starflight-virtual.de/c++/klassen1.rar
Zu dem Problem bin ich gekommen als ich dies hier nachvollziehen wollte. Ich hatte mir mein erstes ContextMenu gebastelt und war eigentlich recht stolz daruaf. Dann scheiterte es allerdings bei einem einfachen Event abfragen wenn man auf einen MenüEintrtag klickt. Also daran das Menu->OnClick Ereignis zu behandeln.
http://msdn2.microsoft.com/en-us/library/4b612y2s.aspx
Vielleicht hat ja jemand von Euch ( Ihr scheint ja hier die einzigen zu sein ) Lust sich das mal anzuschauen ?
Matthias
-
Sobald im Header für die Form ein ref struct auftaucht (auch unterhalt der Klassendefinition), kommt die Meldung mit dem VCCodeModel.
Ich schliesse aber nicht aus, das die Englische Version des VC sich anderst vehält.
Das man sich zur Problemlösung anderer deren Projekte downloaded ist eher ungewöhnlich und ausnahmen.
Deine Probleme die Du im Projekt ansprichst wirst Du lösen können wenn Du mal anfängst die Grundlagen von C++ zu lernen bevor Du anfängst mit Klickeroberflächen. Das ist nun mal realität an der auch Du nicht vorbeikommst.
So überleg Dir mal was z.B. button1_Click von zugriff_3 an dieser stelle bereits kennen könnte.
Ansonsten gewöhne Dir bitte mal an pro Problem einen Thread aufzumachen. Es wird sehr unübersichtlich hier und Du hast mehr chancen hilfe auch anderer zu bekommen bei kleinen Threads. Der hier geht 4 Seiten lang, da gibt es wohl kaum noch jemanden der mitliest.
-
Hallo,
danke Dir trotzdem das Du es Dir angesehen hast.
Nach dem Problem hier mache ich auch ( versprochen ) nen neuen Thread auf !Also Folgendes, das fehlt in dem Projekt. Ich wollte eigentlich mal wissen wie man textBox1->text = L".."; aus einer anderen Classe ändern kann.
1. die Ableitung der TextBox public machen, das geht aber auch nicht
Also public: System::Windows::Forms::TextBox^ textBox1;Hmm...ich kann aber wohl aus einer anderen Classe auf eine static public funktion der Classe Form1 zugreifen und in der Funktion dann die Eigenschaft text der textBox1 ändern.
Das ist auch der einzige Weg der mir einfällt...gibts denn da noch ne andere Lösung ?
Ich hab das ganze Projekt hochgeladen weil ich immer Probleme habe wenn Ihr mir ( netterweise !! ) ein stück code hier reinschreibt, dann ist das zwar echt nett, aber ich weiss manchmal nicht genau wo das jetzt hingehören soll.
So, jetzt hab ich das Problem das ich hin wie her nicht auf die classe zugriff_3 komme.
1. Versuch :
... public ref class Form1 : public System::Windows::Forms::Form { public: ... #pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { // Hier hab ich nun gar keine Ahnung wie ich am besten auf die Member der // Classen zugriff_* zugreifen kann ? // zugriff_3::changeTextBox_3(); /* Fehler 1 error C2653: 'zugriff_3': Keine Klasse oder Namespace e:\eigene dateien\visual studio 2005\projects\projects c++\klassen1\klassen1\Form1.h 105 // Hmmmmmm ???? */ zugriff_3 zg;//::changeTextBox_3^ zg; } }; // Ende Class Form1 ref class zugriff_3: public Form1 { public: void changeTextBox_3() { Form1^ F; // <-- soweit so gut, das könnte gehen oder ? F->textBox1->Text = L"Hallo TextBox aus Classe Zugriff_3"; //Form1::changeTextBox(); }; }; // Nur weiter oben kan nich doch nicht auf zugriff_3 zugreifen ? // <<<<<<<<< private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { <<<<<<<<< // Die kennt der Compiler doch da noch nicht.
Er kennt ja nicht mal die Classe selber bei button1_click ???
Matthias