class non reconnue depuis un autre fichier

class non reconnue depuis un autre fichier - C++ - Programmation

Marsh Posté le 30-04-2008 à 17:09:07    

Bonjour,
 
 
J'ai ma class userInterface cree a partir visual c++ 2008 dont le code est le suivant :
 
 

Code :
  1. #pragma once
  2. using namespace System;
  3. using namespace System::ComponentModel;
  4. using namespace System::Collections;
  5. using namespace System::Windows::Forms;
  6. using namespace System::Data;
  7. using namespace System::Drawing;
  8. namespace project3D {
  9. /// <summary>
  10. /// Summary for userInterface
  11. ///
  12. /// WARNING: If you change the name of this class, you will need to change the
  13. ///          'Resource File Name' property for the managed resource compiler tool
  14. ///          associated with all .resx files this class depends on.  Otherwise,
  15. ///          the designers will not be able to interact properly with localized
  16. ///          resources associated with this form.
  17. /// </summary>
  18. public ref class userInterface : public System::Windows::Forms::Form
  19. {
  20. public:
  21.  userInterface(void)
  22.  {
  23.   InitializeComponent();
  24.   //
  25.   //TODO: Add the constructor code here
  26.   //
  27.  }
  28. protected:
  29.  /// <summary>
  30.  /// Clean up any resources being used.
  31.  /// </summary>
  32.  ~userInterface()
  33.  {
  34.   if (components)
  35.   {
  36.    delete components;
  37.   }
  38.  }
  39. private: System::Windows::Forms::ComboBox^  colorComboList;
  40. private: System::Windows::Forms::ComboBox^  cartogramComboList;
  41. private: System::Windows::Forms::ComboBox^  zComboList;
  42. protected:
  43. private: System::Windows::Forms::Label^  colorsLabel;
  44. private: System::Windows::Forms::Label^  cartogramLabel;
  45. private: System::Windows::Forms::Label^  zLabel;
  46. private: System::Windows::Forms::Button^  displayButton;
  47. private: System::Windows::Forms::CheckBox^  interpolateZCheckBox;
  48. private: System::Windows::Forms::Label^  setupAndDisplayLabel;
  49. protected:
  50. private:
  51.  /// <summary>
  52.  /// Required designer variable.
  53.  /// </summary>
  54.  System::ComponentModel::Container ^components;
  55. #pragma region Windows Form Designer generated code
  56.  /// <summary>
  57.  /// Required method for Designer support - do not modify
  58.  /// the contents of this method with the code editor.
  59.  /// </summary>
  60.  void InitializeComponent(void)
  61.  {
  62.   this->colorComboList = (gcnew System::Windows::Forms::ComboBox());
  63.   this->cartogramComboList = (gcnew System::Windows::Forms::ComboBox());
  64.   this->zComboList = (gcnew System::Windows::Forms::ComboBox());
  65.   this->colorsLabel = (gcnew System::Windows::Forms::Label());
  66.   this->cartogramLabel = (gcnew System::Windows::Forms::Label());
  67.   this->zLabel = (gcnew System::Windows::Forms::Label());
  68.   this->displayButton = (gcnew System::Windows::Forms::Button());
  69.   this->interpolateZCheckBox = (gcnew System::Windows::Forms::CheckBox());
  70.   this->setupAndDisplayLabel = (gcnew System::Windows::Forms::Label());
  71.   this->SuspendLayout();
  72.   //  
  73.   // colorComboList
  74.   //  
  75.   this->colorComboList->FlatStyle = System::Windows::Forms::FlatStyle::System;
  76.   this->colorComboList->FormattingEnabled = true;
  77.   this->colorComboList->Location = System::Drawing::Point(12, 95);
  78.   this->colorComboList->Name = L"colorComboList";
  79.   this->colorComboList->Size = System::Drawing::Size(266, 21);
  80.   this->colorComboList->Sorted = true;
  81.   this->colorComboList->TabIndex = 0;
  82.   //  
  83.   // cartogramComboList
  84.   //  
  85.   this->cartogramComboList->FormattingEnabled = true;
  86.   this->cartogramComboList->Location = System::Drawing::Point(11, 170);
  87.   this->cartogramComboList->Name = L"cartogramComboList";
  88.   this->cartogramComboList->Size = System::Drawing::Size(267, 21);
  89.   this->cartogramComboList->Sorted = true;
  90.   this->cartogramComboList->TabIndex = 1;
  91.   this->cartogramComboList->SelectedIndexChanged += gcnew System::EventHandler(this, &userInterface::comboBox2_SelectedIndexChanged);
  92.   //  
  93.   // zComboList
  94.   //  
  95.   this->zComboList->FormattingEnabled = true;
  96.   this->zComboList->Location = System::Drawing::Point(12, 239);
  97.   this->zComboList->Name = L"zComboList";
  98.   this->zComboList->Size = System::Drawing::Size(267, 21);
  99.   this->zComboList->Sorted = true;
  100.   this->zComboList->TabIndex = 2;
  101.   //  
  102.   // colorsLabel
  103.   //  
  104.   this->colorsLabel->AutoSize = true;
  105.   this->colorsLabel->Location = System::Drawing::Point(11, 70);
  106.   this->colorsLabel->Name = L"colorsLabel";
  107.   this->colorsLabel->Size = System::Drawing::Size(42, 13);
  108.   this->colorsLabel->TabIndex = 3;
  109.   this->colorsLabel->Text = L"Colors :";
  110.   //  
  111.   // cartogramLabel
  112.   //  
  113.   this->cartogramLabel->AutoSize = true;
  114.   this->cartogramLabel->Location = System::Drawing::Point(8, 140);
  115.   this->cartogramLabel->Name = L"cartogramLabel";
  116.   this->cartogramLabel->Size = System::Drawing::Size(61, 13);
  117.   this->cartogramLabel->TabIndex = 4;
  118.   this->cartogramLabel->Text = L"Cartogram :";
  119.   //  
  120.   // zLabel
  121.   //  
  122.   this->zLabel->AutoSize = true;
  123.   this->zLabel->Location = System::Drawing::Point(11, 214);
  124.   this->zLabel->Name = L"zLabel";
  125.   this->zLabel->Size = System::Drawing::Size(20, 13);
  126.   this->zLabel->TabIndex = 5;
  127.   this->zLabel->Text = L"Z :";
  128.   //  
  129.   // displayButton
  130.   //  
  131.   this->displayButton->Location = System::Drawing::Point(98, 309);
  132.   this->displayButton->Name = L"displayButton";
  133.   this->displayButton->Size = System::Drawing::Size(98, 44);
  134.   this->displayButton->TabIndex = 6;
  135.   this->displayButton->Text = L"Display";
  136.   this->displayButton->UseVisualStyleBackColor = true;
  137.   //  
  138.   // interpolateZCheckBox
  139.   //  
  140.   this->interpolateZCheckBox->AutoSize = true;
  141.   this->interpolateZCheckBox->Location = System::Drawing::Point(14, 266);
  142.   this->interpolateZCheckBox->Name = L"interpolateZCheckBox";
  143.   this->interpolateZCheckBox->Size = System::Drawing::Size(86, 17);
  144.   this->interpolateZCheckBox->TabIndex = 7;
  145.   this->interpolateZCheckBox->Text = L"Interpolate Z";
  146.   this->interpolateZCheckBox->UseVisualStyleBackColor = true;
  147.   //  
  148.   // setupAndDisplayLabel
  149.   //  
  150.   this->setupAndDisplayLabel->AutoSize = true;
  151.   this->setupAndDisplayLabel->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 12, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
  152.    static_cast<System::Byte>(0)));
  153.   this->setupAndDisplayLabel->Location = System::Drawing::Point(65, 19);
  154.   this->setupAndDisplayLabel->Name = L"setupAndDisplayLabel";
  155.   this->setupAndDisplayLabel->Size = System::Drawing::Size(155, 20);
  156.   this->setupAndDisplayLabel->TabIndex = 8;
  157.   this->setupAndDisplayLabel->Text = L"Setup and Display";
  158.   this->setupAndDisplayLabel->TextAlign = System::Drawing::ContentAlignment::TopCenter;
  159.   //  
  160.   // userInterface
  161.   //  
  162.   this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
  163.   this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
  164.   this->ClientSize = System::Drawing::Size(292, 365);
  165.   this->Controls->Add(this->setupAndDisplayLabel);
  166.   this->Controls->Add(this->interpolateZCheckBox);
  167.   this->Controls->Add(this->displayButton);
  168.   this->Controls->Add(this->zLabel);
  169.   this->Controls->Add(this->cartogramLabel);
  170.   this->Controls->Add(this->colorsLabel);
  171.   this->Controls->Add(this->zComboList);
  172.   this->Controls->Add(this->cartogramComboList);
  173.   this->Controls->Add(this->colorComboList);
  174.   this->Name = L"userInterface";
  175.   this->Text = L"Setup and display";
  176.   this->ResumeLayout(false);
  177.   this->PerformLayout();
  178.  }
  179. #pragma endregion
  180. private: System::Void comboBox2_SelectedIndexChanged(System::Object^  sender, System::EventArgs^  e) {
  181.    }
  182. };
  183. }


 
un code vraiment classique est basique.
donc mon fichier cpp ou je veux utiliser cette UI j'ai lde code suivant :
 

Code :
  1. // incluse userInterface
  2. #include "userInterface/userInterface.h"
  3. int main(int argc, char *argv[]){
  4. userInterface UI;
  5. }


 
et l'erreur a la con suivant :
 

Code :
  1. error C2065: 'userInterface' : undeclared identifier


 
donc il ne reconnait pas la classe que je lui ai incluse. j'ai tente de trouver la reponse dans l'aide mais a croire que personne ne fait cette operation. donc j'aurai besoin d'aide

Reply

Marsh Posté le 30-04-2008 à 17:09:07   

Reply

Marsh Posté le 30-04-2008 à 17:25:56    

c'ets du managed C++ ça non ?

Reply

Marsh Posté le 30-04-2008 à 17:26:27    

namespace project3D :whistle:  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-04-2008 à 17:34:03    

Joel F a écrit :

c'ets du managed C++ ça non ?


 
disons que j'ai utilise l'editeur d'interface graphique pour me faire "gagner" du temps.
 

gilou a écrit :

namespace project3D :whistle:  
A+,


 
 :??:  
 

Reply

Marsh Posté le 30-04-2008 à 17:37:43    

namespace project3D {
....
public ref class userInterface : public System::Windows::Forms::Form
....
}
 
donc:  
 
project3D::userInterface UI;
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-05-2008 à 11:28:02    

merci mais j'ai une autre question (la doc a ce niveau la est totalement pourrie donc si vous avez des liens pour la doc je ne serai pas contre car passer mon temps a poser des questions stupides c pas mon truc)
donc le probleme maintenant c'est que je voudrais juste lancer ma fenetre
 
j'ai tente un truc simple :
UI.show();
 
bien sur ca affiche ma fenetre (cool...) mais bien sur le programme continue et ne boucle pas sur la fenetre comme je le voudrais.
mais comment faire ca au juste ?
 
pour resumer je voudrais que ma form prenne la main tant qu'elle n'a pas recu l'ordre explicite de se fermer (ce qui personnelement devrait etre le comportement logique du programme)
 
desole encore pour ces questions stupides :S

Reply

Marsh Posté le 01-05-2008 à 14:03:36    

Salut,
 
Ce serait pas showDialog() que tu veux utiliser? Ce que tu indiques, c'est la différence entre fenêtre non modale (qui ne bloque pas l'accès aux autres fenêtres de l'application) et modale (qui interdit à l'utilisateur d'interagir avec le reste de l'appli tant que celle ci n'est pas fermé).

Reply

Marsh Posté le 01-05-2008 à 14:20:18    

Tu as du code creant une form.
 
Si tu avais testé VC++ avec le generateur de code pour une forme vide nommée form1 ici, tu aurais obtenu ceci (généré avec VC++ 2008):

Code :
  1. // emptyform.cpp : main project file.
  2. #include "stdafx.h"
  3. #include "Form1.h"
  4. using namespace emptyform;
  5. [STAThreadAttribute]
  6. int main(array<System::String ^> ^args)
  7. {
  8. // Enabling Windows XP visual effects before any controls are created
  9. Application::EnableVisualStyles();
  10. Application::SetCompatibleTextRenderingDefault(false);
  11. // Create the main window and run it
  12. Application::Run(gcnew Form1());
  13. return 0;
  14. }


Si tu comprends ce que fais la ligne en rouge, tu devrais pouvoir adapter ton code pour obtenir ce que tu cherches. Si tu ne comprends pas ce que fait la ligne en rouge, achetes un bouquin sur la prog windows avec VC++ et lis le.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-05-2008 à 17:54:27    

IrmatDen a écrit :

Salut,
 
Ce serait pas showDialog() que tu veux utiliser? Ce que tu indiques, c'est la différence entre fenêtre non modale (qui ne bloque pas l'accès aux autres fenêtres de l'application) et modale (qui interdit à l'utilisateur d'interagir avec le reste de l'appli tant que celle ci n'est pas fermé).


 
merci c'est parfaitement ca !
 

gilou a écrit :


 
Si tu comprends ce que fais la ligne en rouge, tu devrais pouvoir adapter ton code pour obtenir ce que tu cherches. Si tu ne comprends pas ce que fait la ligne en rouge, achetes un bouquin sur la prog windows avec VC++ et lis le.
A+,
 


 
tu sais des fois dans un projet l'informatique on s'en fout royalement et c'est le cas dans le mien.  
donc non je n'ai pas le temps de lire un livre de 500 pages sur la prog windows avec vc++
c'est ca le probleme quand on ne bosse pas dans une boite d'info. les delais sont courts tres court et les moyens nuls

Reply

Marsh Posté le 01-05-2008 à 18:34:12    

lordankou a écrit :

tu sais des fois dans un projet l'informatique on s'en fout royalement et c'est le cas dans le mien.  
donc non je n'ai pas le temps de lire un livre de 500 pages sur la prog windows avec vc++
c'est ca le probleme quand on ne bosse pas dans une boite d'info. les delais sont courts tres court et les moyens nuls


Ah par contre, si tu fais pas d'efforts par toi même, t'attends plus à recevoir beaucoup d'aides...

Reply

Marsh Posté le 01-05-2008 à 18:34:12   

Reply

Marsh Posté le 01-05-2008 à 20:21:55    

lordankou a écrit :


 
tu sais des fois dans un projet l'informatique on s'en fout royalement et c'est le cas dans le mien.  
donc non je n'ai pas le temps de lire un livre de 500 pages sur la prog windows avec vc++
c'est ca le probleme quand on ne bosse pas dans une boite d'info. les delais sont courts tres court et les moyens nuls

Le jour ou ton client ne recettera pas (et donc ne paiera pas) le dev a cause d'un gros bug du a de la prog sans comprendre ce qu'on fait, (la typiquement, tu melanges des forms a la CLR et de l'api standard a l'ancienne, c'est pas interdit, mais vaut mieux comprendre ce que l'on fait) faudra pas venir pleurer ici.
 
Deja, tu as l'air de faire du C++ sans savoir ce qu'est un namespace, ce qui est plus qu'inquiétant.
A+,

Message cité 1 fois
Message édité par gilou le 01-05-2008 à 20:24:47

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-05-2008 à 11:46:38    

IrmatDen a écrit :


Ah par contre, si tu fais pas d'efforts par toi même, t'attends plus à recevoir beaucoup d'aides...


 
pas d'effort par moi meme ?!?
je suis 7j/7 au boulot pratiquement je travail pqs loin de 12h par jours sans pouvoir prendre de pause a midi pour aller manger (je mange devant l'ordi) et le tout payer au lance pierre tout ca parce que je bosse sur differents projets en meme temps.
alors me dire que je ne fais pas d'effort ca me fait rire jaune...
 

gilou a écrit :

Le jour ou ton client ne recettera pas (et donc ne paiera pas) le dev a cause d'un gros bug du a de la prog sans comprendre ce qu'on fait, (la typiquement, tu melanges des forms a la CLR et de l'api standard a l'ancienne, c'est pas interdit, mais vaut mieux comprendre ce que l'on fait) faudra pas venir pleurer ici.
 
Deja, tu as l'air de faire du C++ sans savoir ce qu'est un namespace, ce qui est plus qu'inquiétant.
A+,


 
oui je sais et c'est un risque que je dois prendre tout simplement parce qu'il n'y a pas d'autres solutions. tu penses que ca me fait plaisir d'ecrire des lignes de codes que je ne comprends pas. je deteste ca mais si je le fais c'est que je n'ai pas le choix. pour une question posee ici c'est des dizaines d'autres que je resouds par moi meme.  
oui pour l'instant je ne sais pas ce que c'est un namespace tout simplement parce que ce qu'on apprend en c++ a l'iut c'est de faire une classe qui permet d'echanger deux nombres. ca ne va pas plus loin.
chaque question que je pose ici c'est du temps que je perds et donc du temps que je devrais venir passer le week-end au boulot.
ici je melange volontairement une programmation a l'ancienne avec des forms tout simplement car le form est une partie ultra petite du projet global. grosso modo un boulon dans une voiture mais un boulon important essentielle.

Reply

Marsh Posté le 02-05-2008 à 14:29:19    

Bon ben si tu veux avoir un truc un peu plus correct au niveau de la gestion de la memoire en managed C++, tu peux utiliser ceci:

Code :
  1. #include "stdafx.h"
  2. // incluse userInterface  
  3. #include "userInterface/userInterface.h"
  4. using namespace project3D;
  5. [STAThreadAttribute]
  6. int main(array<System::String^>^ args)
  7. {
  8. // Enabling Windows XP visual effects before any controls are created  
  9. Application::EnableVisualStyles();
  10. Application::SetCompatibleTextRenderingDefault(false);
  11. // les deux lignes precedentes, generees automatiquement par le compilo
  12. // n'ont peut etre pas grand interet pour ton appli
  13. userInterface^ UI = gcnew userInterface();
  14. UI->ShowDialog();
  15. // ......
  16. delete UI;
  17. // l'appel a delete est un peu inutile ici, le garbage collector
  18. // saura faire le necessaire, mais bon...
  19. return 0;
  20. }


A+,


Message édité par gilou le 02-05-2008 à 15:02:01

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 02-05-2008 à 14:35:10    

merci beaucoup mais je vais aussi prendre le temps d'etudier un peu plus le namespace vu que je l'utilise un peu beaucoup souvent :p
 
bonne journee !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed