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
};
} |