【问题标题】:Access class function from different cpp (how to declare)从不同的cpp访问类函数(如何声明)
【发布时间】:2011-06-16 10:45:48
【问题描述】:

我的 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 再次变为空,而且我不知道谁来解决这个问题,因为我希望值保持不变,这样我就可以使用这个函数访问任何地方。

【问题讨论】:

  • e1 和 e2 不是两个不同的对象吗?还是你在某处做作业或抄袭?
  • 我建议学习 OOP 的工作原理,包括类和对象之间的区别。
  • @dark_charlie :我已经解决了这个问题(感谢 Donotalo),但是你有一个很好的教程让我看看吗?

标签: c++ qt class function header


【解决方案1】:

变量必须是static:

class SharedVariables
{
    private:
        static QString TextoPesquisa;

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

QString SharedVariables::TextoPesquisa;

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 一个 SharedVariable 对象?...你是这样挖掘的:“SharedVariables MyVariables;”然后像这样调用 MyVariables.getTextoPesquisa(); ?当谈到内存使用时,什么是最好的?静态解决方案还是在软件启动时创建一个类对象?
    • 在我看来,您应该尽可能避免使用静态(全局)变量。但是,考虑到内存使用情况,任何一个选项都不会产生重大影响。
    • 只有在用户使用软件的过程中,我找到了一种在类中使用相同变量的方法,才能避免使用静态变量。我试图在 main 中创建 SharedVariables 对象,但我不知道如何在其他源(cpp)文件中调用它:S
    • 每个 .cpp 文件都是一个不同的类(至少应该是这样)。要从不同的类调用 SharedVariables,您需要使用指向 SharedVariables 的指针初始化这些类,或者使用接收对 SharedVariables 的引用的方法。我建议您阅读更多有关 C++ 的内容。这是一本非常好的(免费)书:mindview.net/Books/TICPP/ThinkingInCPP2e.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2020-03-22
    • 1970-01-01
    • 2011-05-24
    相关资源
    最近更新 更多