VC++ CRL, Problem bei einer Objekterzeugung

Fifadoc

BIOS-Overclocker(in)
Moin,

eigentlich hab ich bisher reines C++ geschrieben, auch OOP.
Nu versuch ich mich grad am VC++ und dort speziell am CRL für Windows.Forms.

Hab mir meinen Spass zusammengeklickt und mir eine eigene Klasse geschrieben.
In der cpp Datei des Projekts kann ich ein Objekt meiner Klasse problemlos erzeugen.
Was ich aber will ist, bestimmte Attribute meiner Klasse mit Daten aus Textboxen etc der Form1 zu füllen.
Dazu brauche ich mein Objekt also in der Form1. Eigentlich wollte ich das Erzeugen des Objekts sogar auf ein Button.Click Event legen, da das Objekt vorher nicht gebraucht wird.
Über den Sinn braucht ihr euch keine Gedanken machen, ich mach das schon ^^

Mein Problem ist nun, dass obwohl ich die Header Datei include, ich in der Klasse Form1 keinen Zugriff auf meine selbstgebaute Klasse bekomme. Stattdessen meldet mir VS08, dass ich einen "nichtdeklarierten Bezeichner" verwende.

Also: Wie oder Wo include ich meine Klasse richtig, damit ich in der Form1 zugriff darauf habe???
 
Mmh, vielleicht ne blöde Frage, aber hast du mal geschaut ob du den Namespace deines Forms auch festgelegt bzw. in der Implementierungsdatei eingetragen hast?
 
keine dumme frage. wie rum meinst du es?
die form ist in einem namespace, die neue klasse ist unabhängig.

ich gucke aber heute abend nochmal. nun hab ich erstmal zu tun, da das tolle windows update gestern abend mein gesamtes system zerhackt hat. -.-
 
Nun ja, ich hab jetzt nicht soviel Erfahrung mit .net, aber soweit ich das weiß, ist auch die Klasse per Default im selben Namespace und das würde ja dein Problem erklären. Wenn du da nicht weiter kommst, poste doch einfach mal ein Codeausschnitt, dann schauen wir uns das einfach mal in ruhe an ... wäre doch gelacht, wenn wir diesen Bug nicht auf die Schliche kommen würden. ;)
 
wie gesagt, grad läuft meine datensicherung, danach gibts nen format und nen neues windoof. ich schau mal, ob ichs bis heute abend wieder alles beisammen hab, dann poste ich den ausschnitt.

mit den namespaces kann das problem aber durchaus sein. die form1 ist in einem eigenen namespace. meine klasse ist ohne namespace. ich vermute, dass sie beim includen des headers einfach nicht in den namespace rein kommt.

das ganze ist, finde ich, jedenfalls erst durch das CRL/.NET so kompliziert ^^
im normalen C++ hatte ich die probleme nicht xD
 
Was du ja einfach mal versuchen kannst ist auf den "Globalen Namespace" zu zugreifen, setzt dazu einfach ein :: davor. ;)

Ist leider etwas unschön, ich empfehle an dieser Stelle immer mit einen eigenen Namespace zu arbeiten schon alleine um irgendwelchen Konflikten aus dem Wege zu gehen.
 
ok, problem gelöst ^^
wenn auch durch zufall, aber es ist irgendwas mit dem debug-kompilieren. wenn ich es als release kompiliere, klappt es wie vorgesehen. oO
 
Naja, irgendwie hatte der Debug-Modus nach dem neuinstallieren meines Systems nun auch ganz andere Probleme. Er meldet nun auch, dass API-Import aufrufe nicht klappen. is schon uhrig, denn das vollständige kompilieren liefert eine funktionierende exe.
 
Da du wohl etwas (bis viel) mehr ahnung hast, als ich hab ich nochmal eine frage:

folgendes will ich tun:
ich habe eine klasse, die elemente verwaltet. Sie hat private werte also int und int arrays, nichts großes. public sind entsprechende get und set funktionen.
die klasse ist in gewöhnlichem c++ also als "class ..." geschrieben.

Sie funktioniert nun auch richtig, aber ich möchte folgendes tun:
es soll nur ein objekt der klasse existieren. dieses sollte am besten erst beim drücken von button1 erzeugt werden. Dazu gibts noch eine textbox und diese soll bei drücken von Enter eben auch mit dem Objekt interagieren.

Die Frage ist nun, WO ich das Objekt erzeugen kann, damit beide darauf zugreifen können.
Als Element von Form1 kann ich es nicht erzeugen, da es eine Verweisklasse ist und ich da nicht ran komme. Im Constructor geht es zwar, hilft mir aber nix.
Irgendwie steh ich da grad auf dem Schlauch.
 
Huhu, was du da möchtest hört sich nach ein Singleton Design an. Ich werf dir dieses Wort mal in Raum, falls du keine Geduld hast. Wenn du was Zeit hast, dann schreibe ich dazu morgen mehr. (Bin leider den ganzen Tag unterwegs)
 
danke für den Tip. hab grad wenig zeit und werd mir dann mal im Wiki was dazu durchlesen.
das scheint es wirklich zu sein, denn ich brauche die klasse irgendwie global, da sonst die Objekte der Form1 nicht dran können. Und wenn die Objektprozeduren ein Objekt erzeugen ist dieses in der anderen Objektprozedur nicht verfügbar.

in UML arbeite ich mich grad erst ein, strukturen werd ich bald lernen.
Bin halt Mathematiker und hole nun noch etwas Softwaredesign nach ;)
 
Nö Fragen hab ich nicht, nur ein "danke" ^^
Damit klappt es nämlich nun.

Der Ansatz mit dem statischen Zeiger auf sich selbst war mir so nicht bekannt :)
 
Zurück