Bonjour,

une petite question en C++ pour laquelle je ne trouve pas de réponse sur Internet, pourriez-vous m'aider ?

1. J'ai un main dans lequel j'alloue plusieurs mémoires qui seront partagées par tout mon programme (ici un exemple avec listLoc).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
 
    // Create memory
    listLocalization * listLoc = new listLocalization();
 
    // Build central widget
    MainWindow::buildCentralWidget(listLoc);
}
2. J'ai une fonction qui crée des onglets (Qt). Ces onglets sont des classes et auront besoin d'accéder à listLoc (un exemple ici).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
void MainWindow::buildCentralWidget(listLocalization * listLoc) {
 
    // Add central widget
    mainWidget = new QTabWidget();
 
    // Create first tab
    tab1 = new tabLocalization(mainWidget);
 
    // Add tabs
    mainWidget->addTab(tab1, tr("&Localization (database)"));
 
    // Define central layout
    setCentralWidget(mainWidget);
}
Comment est-ce que je peux donner accès à ma mémoire listLoc à la classe tabLocalization ?


Une solution à laquelle je pense serait de rajouter un pointer dans la classe tabLocalization:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
class tabLocalization : public QWidget {
    Q_OBJECT
 
public:
    explicit tabLocalization(QWidget *parent = 0, listLocalization * listLoc);
    ~tabLocalization();
 
private:
    listLocalization * listPtr;
}
Et de faire pointer listPtr vers listLoc dans le constructeur.

Est-ce qu'il existe une façon plus simple ou propre de faire ce que je souhaite ?

Merci pour votre réponse !