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