samedi 1 décembre 2018

Using object directly from another class c++

Hi i have 3 classes than i want to use. but i dont want to create object of one class more than once. I directly want to use the object of one class declared and initialized in second class.

Class Mainwindow header

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "secondscreen.h"
#include "networkconnection.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    NetworkConnection *NetworkConnectionObject;

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    SecondScreen* SecondScreenObject;
};

#endif // MAINWINDOW_H

Class Main Window cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include  "QMessageBox"
#include "networkconnection.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    NetworkConnectionObject = new NetworkConnection();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString Username = ui->UsernameObject->text();
    QString Password = ui->PasswordObject->text();

    int Error  =  NetworkConnectionObject->Connect(Username,Password);

    if (Error == 0)
    {
       hide();
       SecondScreenObject = new SecondScreen();
       SecondScreenObject->show();
    }
    else
    {
        ui->UsernameObject->setText("");
        ui->PasswordObject->setText("");
    }
}

Class NetworkConnection Header

#ifndef NETWORKCONNECTION_H
#define NETWORKCONNECTION_H

#include <QString>


class NetworkConnection
{
public:
    NetworkConnection();
    int Connect(QString Username, QString Passwd);
    QString LogInToken;
};

#endif // NETWORKCONNECTION_H

Now i want to use Networkclassobject directly in SeconScreenclass so that i can access LogInToken Member of MainWindowInstance.

#include "secondscreen.h"
#include "ui_secondscreen.h"
#include "mainwindow.cpp"

SecondScreen::SecondScreen(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SecondScreen)
{
    ui->setupUi(this);

    ui->Display->setText(MainWindow::NetworkConnectionObject.LogInToken);

}

SecondScreen::~SecondScreen()
{
    delete ui;
}

However, when i try this compiler says Invalid use of non-static data member "MainWindow::NetworkConnectionObject" Problem is i dont want to declare it static. Is there any way to do it.

Aucun commentaire:

Enregistrer un commentaire