Est-il possible de mettre en œuvre static
fonctions membres de la classe dans le fichier *.cpp au lieu de le faire dans le fichier d'en-tête ?
Est-ce que tous les static
fonctions toujours inline
?
Est-il possible de mettre en œuvre static
fonctions membres de la classe dans le fichier *.cpp au lieu de le faire dans le fichier d'en-tête ?
Est-ce que tous les static
fonctions toujours inline
?
@crobar, vous avez raison de dire qu'il y a une pénurie d'exemples multi-fichiers, donc j'ai décidé de partager ce qui suit dans l'espoir que cela aide les autres :
::::::::::::::
main.cpp
::::::::::::::
#include <iostream>
#include "UseSomething.h"
#include "Something.h"
int main()
{
UseSomething y;
std::cout << y.getValue() << '\n';
}
::::::::::::::
Something.h
::::::::::::::
#ifndef SOMETHING_H_
#define SOMETHING_H_
class Something
{
private:
static int s_value;
public:
static int getValue() { return s_value; } // static member function
};
#endif
::::::::::::::
Something.cpp
::::::::::::::
#include "Something.h"
int Something::s_value = 1; // initializer
::::::::::::::
UseSomething.h
::::::::::::::
#ifndef USESOMETHING_H_
#define USESOMETHING_H_
class UseSomething
{
public:
int getValue();
};
#endif
::::::::::::::
UseSomething.cpp
::::::::::::::
#include "UseSomething.h"
#include "Something.h"
int UseSomething::getValue()
{
return(Something::getValue());
}
Bien sûr que tu peux. Je dirais même que vous devriez.
Cet article peut être utile :
http://www.learncpp.com/cpp-tutorial/812-static-member-functions/
El #include
signifie littéralement "copier toutes les données de ce fichier à cet endroit". Ainsi, lorsque vous incluez le fichier d'en-tête, il se trouve textuellement à l'intérieur du fichier de code, et tout ce qu'il contient s'y trouvera, avec ou sans l'effet d'autres directives ou de remplacements de macros, lorsque le fichier de code (appelé maintenant le fichier unité de compilation o unité de traduction ) est transféré du module préprocesseur au module compilateur.
Ce qui signifie que la déclaration et la définition de votre fonction membre statique étaient en réalité dans le même fichier depuis le début...
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.