250 votes

Séparation du code de classe dans un en-tête et un fichier cpp

Je ne sais pas comment séparer le code d'implémentation et de déclaration d'une classe simple dans un nouvel en-tête et un nouveau fichier cpp. Par exemple, comment séparer le code de la classe suivante ?

 class A2DD
{
  private:
  int gx;
  int gy;

  public:
  A2DD(int x,int y)
  {
    gx = x;
    gy = y;
  }

  int getSum()
  {
    return gx + gy;
  }
};

343voto

fritzone Points 9925

La déclaration de classe va dans le fichier d'en-tête. Il est important que vous ajoutiez les #ifndef include guards, ou si vous êtes sur une plate-forme MS, vous pouvez également utiliser #pragma once . J'ai également omis le privé, par défaut les membres de la classe C++ sont privés.

 // A2DD.h
#ifndef A2DD_H
#define A2DD_H

class A2DD
{
  int gx;
  int gy;

public:
  A2DD(int x,int y);
  int getSum();

};

#endif

et l'implémentation va dans le fichier CPP :

 // A2DD.cpp
#include "A2DD.h"

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}

27voto

Nick Points 376

En général, votre .h contient la définition de classe, qui est toutes vos données et toutes vos déclarations de méthode. Comme ça dans ton cas :

 A2DD.h:

class A2DD
{
  private:
  int gx;
  int gy;

  public:
  A2DD(int x,int y);    
  int getSum();
};

Et puis votre .cpp contient les implémentations des méthodes comme ceci :

 A2DD.cpp:

A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}

8voto

Corbin Points 17420

Fondamentalement, une syntaxe modifiée de déclaration/définition de fonction :

a2dd.h

 class A2DD
{
private:
  int gx;
  int gy;

public:
  A2DD(int x,int y);

  int getSum();
};

a2dd.cpp

 A2DD::A2DD(int x,int y)
{
  gx = x;
  gy = y;
}

int A2DD::getSum()
{
  return gx + gy;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X