Meilleur auteur de réponses
une référence qui n'est pas appliquée

Question
-
bonjour
Je butte sur la définition de form1
#ifndef OPENAFILE_H #define OPENAFILE_H #pragma once namespace SpecificationChecker { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Description résumée de OpenAFile /// </summary> public ref class OpenAFile : public System::Windows::Forms::Form { public: Form^ form1; OpenAFile::OpenAFile(void); OpenAFile::OpenAFile(Form^ form1); System::Windows::Forms::OpenFileDialog^ openFileDialog1; System::Windows::Forms::ListBox^ listBox1; System::ComponentModel::Container ^components; protected: /// <summary> /// Nettoyage des ressources utilisées. /// </summary> OpenAFile::~OpenAFile(); private: void OpenAFile::InitializeComponent(void); System::Void OpenAFile::openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e); System::Windows::Forms::Button^ button1; System::Windows::Forms::Button^ button2; System::Windows::Forms::Button^ button3; System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e); System::Void button2_Click_1(System::Object^ sender, System::EventArgs^ e); System::Void button3_Click_1(System::Object^ sender, System::EventArgs^ e); }; } #endif
il est défini dans l'include et référencé dans deux méthodes:
System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { // Open a file // on récupère le numero de la ligne sélectionnée System::String^ line; form1->listBox1->GetItemText( line) } System::Void button2_Click_1(System::Object^ sender, System::EventArgs^ e) { // Cancel form1->Close(); }
mais le compilateur n'aime pas
>OpenAFile.cpp(146): error C2227: la partie gauche de '->listBox1' doit pointer vers un type class/struct/union/générique 1> le type est ''unknown-type'' 1>OpenAFile.cpp(146): error C2227: la partie gauche de '->GetItemText' doit pointer vers un type class/struct/union/générique 1>OpenAFile.cpp(147): error C2143: erreur de syntaxe : absence de ';' avant '}' 1>OpenAFile.cpp(152): error C2065: 'form1' : identificateur non déclaré 1>OpenAFile.cpp(152): error C2227: la partie gauche de '->Close' doit pointer vers un type class/struct/union/générique 1> le type est ''unknown-type''
comment faire la déclaration pour qu'elle soit vue?
Jean Noël Martin
Réponses
-
Vous avez bien remplacé
System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e)
par
System::Void OpenAFile::button1_Click_1(System::Object^ sender, System::EventArgs^ e)
et le message d'erreur est le même ?
- Marqué comme réponse JeanNoel53 mercredi 23 juillet 2014 04:40
Toutes les réponses
-
Bonjour,
Votre classe OpenAFile est désormais votre formulaire à part entière !
Vous n'avez pas besoin de déclarer form1. Votre code doit être celui-ci :
System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { // Open a file // on récupère le texte sélectionné String^ line = (String^)listBox1->SelectedItem; } System::Void button2_Click_1(System::Object^ sender, System::EventArgs^ e) { // Cancel this->Close(); }
Bien cordialement,
Fabrice JEAN-FRANCOIS, Novencia TS
-
J'ai donc codé
System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) { // Open a file // on récupère le numero de la ligne sélectionnée String^ line = (String^)listBox1->SelectedItem; } System::Void button2_Click_1(System::Object^ sender, System::EventArgs^ e) { // Cancel this->Close(); }
et le compilateur m'a répondu:
1>OpenAFile.cpp(137): error C2065: 'listBox1' : identificateur non déclaré 1>OpenAFile.cpp(137): error C2227: la partie gauche de '->SelectedItem' doit pointer vers un type class/struct/union/générique 1> le type est ''unknown-type'' 1>OpenAFile.cpp(143): error C2355: 'this' : ne peut être référencé qu'à l'intérieur de fonctions membres non static 1>OpenAFile.cpp(143): error C2227: la partie gauche de '->Close' doit pointer vers un type class/struct/union/générique 1>
Jean Noël Martin
-
Pourriez-vous svp mettre le nom des classes en résolution de portée devant les méthodes.
Ce qui devrait vous donner ceci :
System::Void OpenAFile::button1_Click_1(System::Object^ sender, System::EventArgs^ e) { // Open a file // on récupère le numero de la ligne sélectionnée String^ line = (String^)listBox1->SelectedItem; } System::Void OpenAFile::button2_Click_1(System::Object^ sender, System::EventArgs^ e) { // Cancel this->Close(); }
Si ça ne compile pas, pensez à utiliser le nom de namespace en haut de votre fichier cpp, après les includes.
Vous devriez avoir en haut de votre fichier qqc du genre :
#include "stdafx.h" #include "Form1.h" using namespace SpecificationChecker ;
Bien cordialement,
Fabrice JEAN-FRANCOIS, Novencia TS
-
Voila l'en_tête mis a jour
#include "StdAfx.h" #include "AlignStructure.h" #include "Macro.h" #include "Message.h" #include "EnumerationM.hpp" #include "StructureM.h" #include "TypeDefs.hpp" #include "TypeDefsM.hpp" #include "POSM.h" #include "ClasseAlignerManaged.hpp" #include "Database.h" #include "SchedulerGlobal.hpp" #include "Form1.h" #include "OpenAFile.h" namespace SpecificationChecker { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace std; using namespace SpecificationChecker;
ca ne compile pas mieux
Jean Noël Martin
-
Vous avez bien remplacé
System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e)
par
System::Void OpenAFile::button1_Click_1(System::Object^ sender, System::EventArgs^ e)
et le message d'erreur est le même ?
- Marqué comme réponse JeanNoel53 mercredi 23 juillet 2014 04:40