从不同的cpp访问类函数(如何声明)

时间:2011-06-16 10:45:49

标签: c++ qt class function header

我的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再次变空,我不知道是谁解决了这个问题,因为我希望值保持不变,所以我可以使用这个函数访问所有地方。 / p>

2 个答案:

答案 0 :(得分:2)

变量必须为static

class SharedVariables
{
    private:
        static QString TextoPesquisa;

还要确保在cpp文件中声明TexttoPesquisa

QString SharedVariables::TextoPesquisa;

因为静态变量没有绑定到特定的类实例,所以它们需要自己的内存位置。

答案 1 :(得分:0)

e2为空,因为您正在使用同一类的两个不同实例。

您需要创建一个SharedVariables对象(例如,在您的主要对象上),然后在.cpp文件中的各种类上使用它。