Déclarer un objet avec Visual Studio 2010
Bonjour :D
précédemment, pour adresser la méthode d'une classe je passais systématiquement par un objet déclaré sur cette classe:
Code:
Test6::OpenAFile objOpenAFile;
Ce qui permet ultérieurement d'adresser les méthodes de la classe par:
Code:
objOpenAFile.InitializeComponent();
Visual Studio 2010 traite bien l'appel mais rejette la déclaration
Code:
1 2 3 4
| OpenAFile.cpp(4): error C3145: 'objOpenAFile' : une variable globale ou statique ne peut pas avoir de type managé 'Test6::OpenAFile'
impossible de déclarer une variable globale ou statique, ou un membre d'un type natif faisant référence à des objets du tas gc
OpenAFile.cpp(4): error C2039: '{dtor}' : n'est pas membre de 'System::IDisposable'
c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\mscorlib.dll : voir la déclaration de 'System::IDisposable' |
comment faire pour déclarer un objet sur une classe et surtout comment faire pour qu'il soit bien initialisé. ce sera :ccool:
J'ai changé la déclaration pour la mettre en managé, mais....
ca donne cela
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
//dans le fichier d'en tête
public ref class OpenAFile : public System::Windows::Forms::Form
{
public:
Form^ form1;
Test6::OpenAFile^ objOpenAFile;
// dans le fichier de code
void OpenAFile(void)
{
Test6::OpenAFile::objOpenAFile = this;
Test6::OpenAFile::objOpenAFile.InitializeComponent();
//
//TODO: ajoutez ici le code du constructeur
} |
et à la compilation
Citation:
1>OpenAFile.cpp(3): error C2355: 'this'*: ne peut être référencé qu'à l'intérieur de fonctions membres non static
OpenAFile.cpp(4): error C2228: la partie gauche de '.InitializeComponent' doit avoir un class/struct/union
le code de la classe jusqu'à la première ligne d'erreur
Bonjour,
J'ai mis le début du code de la classe ci-dessous. J'ai deux constructeurs :le premier est là pour la forme, le second est celui qui doit être activé au début de la mise en place de la form.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include "StdAfx.h"
#include <string>
#include "OpenAFile.h"
OpenAFile(void)
{
this->InitializeComponent();
//
//TODO: ajoutez ici le code du constructeur
}
OpenAFile( System::Windows::Forms::Form^ form1)
{
this->form1 = form1; |
Mais dès le premier constructeur l'erreur est générée
Je sent poindre la solution
J'ai séparé la déclaration de la classe du code; ce processus m'avait été indiqué quand j'ai commence à faire du C++.;
Il est possible que Visual Studio refuse cette propriété, même si la déclaration de la classe comprend les type des méthodes de la classe qui sont codé dans le fichier des données.
je le joint ci dessous. j'ai déclaré tout en public pour vérifier que la non connaissance des symboles ne venait pas de ce problème. J'attends de comprendre pour avancer.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "StdAfx.h"
std::string sFileToOpen;
std::string sPathOfTheFile;
std::string sDiskOfTheFile;
namespace Test6 {
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 System::IO;
/// <summary>
/// Description résumée de OpenAFile
/// </summary>
public ref class OpenAFile : public System::Windows::Forms::Form
{
public:
Form^ form1;
Test6::OpenAFile^ objOpenAFile;
OpenAFile::OpenAFile(void);
OpenAFile::OpenAFile(Form^ form1);
void Test6::OpenAFile::InitializeComponent(void);
System::Void Test6::OpenAFile::button2_Click(System::Object^ sender, System::EventArgs^ e);
System::Void Test6::OpenAFile::button1_Click(System::Object^ sender, System::EventArgs^ e);
System::Void Test6::OpenAFile::button3_Click(System::Object^ sender, System::EventArgs^ e);
System::Windows::Forms::Button^ button1;
System::Windows::Forms::Button^ button2;
System::Windows::Forms::Button^ button3;
System::Windows::Forms::Label^ label1;
System::Windows::Forms::Label^ label2;
System::Windows::Forms::Label^ label3;
System::Windows::Forms::Label^ label4;
System::Windows::Forms::Label^ label5;
System::Windows::Forms::TextBox^ textBox1;
System::Windows::Forms::TextBox^ textBox2;
System::Windows::Forms::TextBox^ textBox3;
System::Windows::Forms::TextBox^ textBox4;
System::Windows::Forms::ProgressBar^ progressBar1;
System::Windows::Forms::OpenFileDialog^ openFileDialog1;
System::ComponentModel::Container^ components;
protected:
OpenAFile::~OpenAFile();
#pragma region Windows Form Designer generated code
/// <summary>
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
/// </summary>
#pragma endregion
};
} |