-2
votes

(C ++) Comment appeler un nom de variable ou obtenir la valeur d'une variable dans différents fichiers cpp?

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

c++

2 commentaires

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


3 Réponses :


0
votes

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;


0 commentaires

1
votes

À 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.


0 commentaires

3
votes

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.


2 commentaires

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.