C++ - variables Privées dans les classes
Je suis en train de créer une classe sous la forme de plusieurs fichiers avec des variables privées.
Pour l'instant mon code de classes est:
Dans TestClass.h
#ifndef TESTCLASS_H
#define TESTCLASS_H
#include <string>
using namespace std;
class TestClass
{
private:
string hi;
public:
TestClass(string x);
void set(string x);
void print(int x);
};
#endif
Dans TestClass.cpp
#include "TestClass.h"
#include <iostream>
#include <string>
using namespace std;
TestClass::TestClass(string x)
{
cout << "constuct " << x << endl;
}
void set(string x){
hi = x;
}
void print(int x){
if(x == 2)
cout << hi << " x = two\n";
else if(x < -10)
cout << hi << " x < -10\n";
else if(x >= 10)
cout << hi << " x >= 10\n";
else
cout << hi << " x = " << x << endl;
}
Quand j'essaie de compiler Code::Blocks, il dit:
- ...\TestClass.cpp: In function 'void set(std::string)':
- ...\TestClass.rpc:12: erreur: "salut" n'a pas été déclarée dans ce cadre
- ...\TestClass.cpp: In function 'void print(int)':
- ...\TestClass.rpc:17: erreur: "salut" n'a pas été déclarée dans ce cadre
- ...\TestClass.rpc:19: erreur: "salut" n'a pas été déclarée dans ce cadre
- ...\TestClass.rpc:21: erreur: "salut" n'a pas été déclarée dans ce cadre
- ...\TestClass.rpc:23: erreur: "salut" n'a pas été déclarée dans ce cadre
Mais quand je le lance (et ne pas le construire) tout fonctionne.
Légèrement sans lien apparent, mais
using namespace std;
dans le fichier d'en-tête est considéré comme une mauvaise pratique car il pollue l'espace de noms.OriginalL'auteur Mr. Giggums | 2011-04-10
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié d'écrire
TestClass::
comme indiqué ci-dessous:Qui est nécessaire afin que le compilateur ne peut pas savoir que
set
etprint
sont des fonctions membres de la classeTestClass
. Et une fois que vous l'écrivez, faisant d'eux les fonctions de membres, ils peuvent accéder aux membres privés de la classe.Aussi, sans TestClass::,
set
etprint
fonction deviendrait gratuit fonctions.OriginalL'auteur Nawaz
Utilisation
et
OriginalL'auteur EboMike
Dans votre
.cpp
fichier, vous avez besoin de faire le jeu et d'imprimer des fonctions de membre explicitement partie de la classe, comme:OriginalL'auteur bgporter
Vous n'avez pas la portée de résoudre votre
print
etset
fonctions avec le nom de la classe.OriginalL'auteur wkl
dire
au lieu de
même pour l'impression().
Vous avez déclaré que les fonctions globales au lieu de fonctions de membre de TestClass.
OriginalL'auteur Adam
Vos méthodes ne sont pas définis comme des méthodes de la classe. Essayez d'utiliser TestClass::set et TestClass::imprimer.
OriginalL'auteur Achim
OriginalL'auteur CyberDem0n