2010-08-23 10 views
2

Je me trouve étourdi par ce qui devrait être un problème simple. Comment faire pour qu'une classe (créée dans un fichier séparé) ait une portée globale lors de l'utilisation de formulaires dans Microsoft C++. Je peux déclarer, initialiser, et l'utiliser dans une fonction de sortie ou de pression de touche de la zone de texte, mais quand je passe à un bouton, il est hors de portée (le bouton et la zone de texte ont une portée globale). Le problème est de faire un clone de la classe (objet) et pour cela il est avantageux d'avoir la portée globale. Je me rends compte que c'est un travail à faire, et je ne demande pas de code, mais pointez-moi dans la bonne direction. Merci DJFaire une classe dans l'application de formulaire C++ global

using namespace Circle; 

form1 code textBox1->Keypress(...) { 

Circle^ C = gcnew Circle(Convert.ToDouble(textBox1->Text)); // write to labels on form the rad, area, and circum 
} 
button1->click(...) { // I want to make a clone of the instance above 

Circle^ C = gcnew Circle(Convert.ToDouble(textBox1->Text)); 
Circle^ CL = C->Clone(C->Radius); // Clone and radius are members of the class Circle 

} 

Le code ci-dessus fonctionne parce que j'ai créé C à nouveau.

Le code suivant ne fonctionnera pas:

button1->clicked(...) 

{ 

Circle CL = C->Clone(C->Radius); 

} 

Répondre

2

Vous devez utiliser un fichier d'en-tête et inclure dans votre classe de formulaire. Gardez à l'esprit si la classe n'a pas besoin d'être dans le même espace, vous devez définir using namespace your_namespace; dans votre classe de formulaire ainsi ou faire référence à votre objet de classe par your_namespace::class

Voir aussi: Introduction to C++

+0

OK- a fait . Je dois être plus précis. Quand j'appuie sur enter en utilisant textBox1-> KeyPress je crée une instance comme ceci CIRCLE^C = gcnew CERCLE (6) // le nombre réel vient de la conversion du texte en double. J'imprime ensuite le rayon (6), la zone et la circonférence qui en résultent dans le formulaire. Je veux maintenant créer un clone de C quand j'appuie sur button1-> click. Si je crée une nouvelle instance et que je l'utilise, je peux créer le clone, mais je ne peux pas utiliser l'instance créée dans textBox-> KeyPress. Je reçois toujours une erreur "Référence d'objet non définie sur une instance d'un objet". Où vais-je mal? – user427921

+0

@ dj1: Pouvez-vous éditer votre question et poster du code? C'est difficile à dire dans les commentaires. –

+0

en utilisant l'espace de noms Cercle; form1 code textBox1-> Keypress (...) { Entourez^C = gcnew Cercle (Convert.ToDouble (textBox1-> Text)); // écrire aux étiquettes sur la forme du rad, région et circum } button1-> cliquez sur (...) {// Je veux faire un clone de l'instance ci-dessus Cercle^C = gcnew Cercle (Convert.ToDouble (textBox1-> Texte)); Entourez^CL = C-> Clone (C-> Rayon); // Le clone et le rayon sont des membres de la classe Cercle } // Le code ci-dessus fonctionne parce que j'ai créé C à nouveau. // Le code suivant ne fonctionnera pas button1-> clicked (...) { Cercle CL = C-> Clone (C-> Rayon); } ce code me donne l'erreur. – user427921

Questions connexes