Variable globale en C++
Résolu
electrikBoy
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
C'est encore moi, même si je sais que ce n'est pas du tout conseillé j'aimerais savoir comment déclarer une classe globale qui puisse se lire dans tout le code.
Actuellement j'ai réalisé ceci :
Dans le fichier.h :
using namespace std;
class DataFile
{
protected :
FILE *fp;
public :
static int NumberElectrode;
static int NumberSample;
static float MaxActivity;
static float MinActivity;
static float XStep;
static float YStep;
static float ZStep;
static float **Coord;
static char **ElecID;
static float **mat;
DataFile(QString);
/*...*/
Ensuite j'appelle dans le constructeur de cette manière :
DataFile::NumberElectrode=NumberOfElectrode(fp); //NumberOfElectrode(fp) est une fonction qui compte le nombre d'électrode.
Et il m'affiche le message d'erruer suivant :
undefined reference to DataFile ::NumberElectrode
Pouvez vous m'aider?
C'est encore moi, même si je sais que ce n'est pas du tout conseillé j'aimerais savoir comment déclarer une classe globale qui puisse se lire dans tout le code.
Actuellement j'ai réalisé ceci :
Dans le fichier.h :
using namespace std;
class DataFile
{
protected :
FILE *fp;
public :
static int NumberElectrode;
static int NumberSample;
static float MaxActivity;
static float MinActivity;
static float XStep;
static float YStep;
static float ZStep;
static float **Coord;
static char **ElecID;
static float **mat;
DataFile(QString);
/*...*/
Ensuite j'appelle dans le constructeur de cette manière :
DataFile::NumberElectrode=NumberOfElectrode(fp); //NumberOfElectrode(fp) est une fonction qui compte le nombre d'électrode.
Et il m'affiche le message d'erruer suivant :
undefined reference to DataFile ::NumberElectrode
Pouvez vous m'aider?
A voir également:
- Variable globale en C++
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ✓ - Forum Python
3 réponses
Salut,
A mon avis tu ferai bien de mettre tes attributs en private, et de faire des accesseurs... le tout en "static".
A mon avis tu ferai bien de mettre tes attributs en private, et de faire des accesseurs... le tout en "static".
Salut.
Les membres statiques sont similaires aux variables globales. As tu déclarer ta variable quelque part ?
exemple simplissime :
ex.h :
et ex.cpp :
"undefined reference" doit être renvoyé par l'éditeur des liens (important de savoir qui renvoi l'erreur, ça aide à la résoudre) et veux dire que la variable n'est pas présente dans les fichiers objets disponibles.
Les membres statiques sont similaires aux variables globales. As tu déclarer ta variable quelque part ?
exemple simplissime :
ex.h :
class Ex { static int ex_var; }
et ex.cpp :
int Ex::ex_var=0;
"undefined reference" doit être renvoyé par l'éditeur des liens (important de savoir qui renvoi l'erreur, ça aide à la résoudre) et veux dire que la variable n'est pas présente dans les fichiers objets disponibles.
Je ne sais pas trop si c'est clair... Je met un peu de code :
Fichier test.cpp :
void MyWindow :: message()
{
QString File = QFileDialog :: getOpenFileName(0, tr(" Select bin file"), "", tr("*.bin")); //You can select a *bin file
if (!(File.isNull())) //If the file exists
{
int answer = QMessageBox::question(this, "File", "Do you wish to select : \n" + File, QMessageBox::Yes|QMessageBox::No); //Ask confirmation
if ((answer==QMessageBox::Yes)) //If it's confirmed
{
DataFile DF(File);
}
Fichier DataFile.cpp:
DataFile :: DataFile (QString file)
{
const char *c=file.toStdString().c_str(); //Convert QString to char
fp=NULL; //Initialisation
fp=fopen(c, "rb"); //Opening in binary form
if (fp!=NULL)
{
char *lire=new char[26]; //Create a character
fgets (lire,26,fp); //Read the title
DataFile::NumberElectrode=NumberOfElectrode(fp); //Count electrode
Ensuite dans un autre fichier si je fais le constructeur de DataFile le QString en paramètre sera nul.
A mon avis y a une bonne incohérence de conception là...