Доступ к функции класса из разных cpp (как объявить) - PullRequest
0 голосов
/ 16 июня 2011

У меня проблема с моим классом Qt (c ++).

Код:

SharedVariables.h

class SharedVariables
{
    private:
        QString TextoPesquisa;
        bool LoginEfectuado;

    public:
        SharedVariables();
        QString getTextoPesquisa();
        void setTextoPesquisa(QString TxtPesquisa);
        bool getLoginUtilizador();
        void setLoginUtilizador(bool UtilizadorComLogin);
};

SharedVariables.cpp

QString ShareVariables::getTextoPesquisa()
{
    return TextoPesquisa;
}

void ShareVariables::setTextoPesquisa(QString TxtPesquisa)
{
    TextoPesquisa = TxtPesquisa;
}

bool ShareVariables::getLoginUtilizador()
{
    return LoginEfectuado;
}

void ShareVariables::setLoginUtilizador(bool UtilizadorComLogin)
{
    LoginEfectuado = UtilizadorComLogin;
}

Затем, чтобы получить доступ к функциям в моих 2 (или более) cpp, я использую это:

File1.cpp (тот, кто пишет)

SharedVariables e1;
e1.setTextoPesquisa("StringHERE");

File1.cpp (тот, кто читает)

SharedVariables e2;
qDebug() << e2.getTextoPesquisa();

Проблема в том, что когда инициализируется e2, мой QString TextoPesquisa снова становится пустым, и я не знаю, кому решать эту проблему, так как я хочу, чтобы значения остались прежними, чтобы я мог получить доступ везде с этими функциями.

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Переменная должна быть static :

class SharedVariables
{
    private:
        static QString TextoPesquisa;

Также убедитесь, что вы объявили TexttoPesquisa в файле cpp:

QString SharedVariables::TextoPesquisa;

Поскольку статические переменные не требуютсяне привязаны к конкретному экземпляру класса, им нужна собственная ячейка памяти.

0 голосов
/ 16 июня 2011

e2 пусто, потому что вы используете два разных экземпляра одного и того же класса.

Вам необходимо создать объект SharedVariables (например, на главном) и затем использовать его для различных классов в файлах .cpp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...