entrez la description de l'image ici
si je veux appeler, utilisez la valeur de char slide_piece dans un autre fichier cpp. Comment implémenter le fichier d'en-tête et comment appeler la fonction? Merci
3 Réponses :
Déclarez-le dans le fichier d'en-tête comme extern:
MyHeader.h:
#include "MyHeader.h" // slide_piece is available here
Définissez-le dans le fichier source: (y compris MyHeader.h n'est pas nécessaire, mais c'est une bonne pratique)
MySource.cpp:
#include "MyHeader.h" char slide_piece;
Utilisez-le dans n'importe quelle autre source en incluant l'en-tête:
OtherSource.cpp:
extern char slide_piece;
À partir de C ++ 17, vous pouvez déclarer et définir votre constante dans un en-tête en utilisant inline :
inline constexpr char slide_piece = '\42';
Quelle est la solution la plus simple et la plus propre pour ce problème à mon humble avis.
GameLogic est une classe et slide_piece devrait en être membre. Ensuite, vous devez ajouter une fonction getter:
char slide_piece = game_logic.get_slide_piece(); // game_logic is a GameLogic object
Dans l'autre fichier cpp, accédez-y en:
// GameLogic.h
class GameLogic
{
public:
char get_slide_piece() // getter function
{
return m_slide_piece;
}
// The rest of the class:
bool MouseDown( char file, char rank, wxPoint &point ); // Sets m_slide_piece value
// & more
protected:
char m_slide_piece = '\0';
// I use to add to member-variable names: "m_"
// So I suggest to rename it to m_slide_piece
// to make it easier to realize when you read the
// code in the cpp that it is a member-variable.
// The rest of the class
};
Dans votre exemple, slide_piece est une variable de la fonction MouseDown et n'est pas valide après le retour de la fonction. L'utilisation de variables globales n'est pas une bonne pratique.
Alors que d'autres ont mentionné des façons de le faire avec des approches globales, je pense que c'est l'approche qui ressemble le plus à la POO, et probablement ce que le PO devrait viser.
Merci beaucoup, cela a si bien résolu mon besoin.
Si vous pouvez modifier GameLogic.cpp et GameLogic.h, c'est faisable mais c'est beaucoup de tracas. Peut-être qu'il y a autre chose qui peut être fait xyproblem.info
copiez et collez votre code ici sous forme de texte, pas dans une image