在另一个类功能使用一个类的变量(using a class's variable in an

2019-09-19 06:28发布

我班有这样的

class A : public QDialog
{
A(QWidget *parent);
static map<int,QString> dataa;
};

class B : public QThread
{
public void run();
}

class C : public QDialog
{
public void abc();
}

类认定中

void B::run()
{
in this function,i am using __dataa__ as __dataa.insert__which is defined initially in A class as public.
}

void C::abc()
{
in this function also,i am using __dataa__ as __dataa.find__ and dataa.end__ which is defined initially in A class as public.
}

现在,请帮助我,我该如何使用,在其他两个类B和C.somewhere可变DataA的我看到的,我们必须声明为静态的,并用它在B和C类为A ::数据,但它不工作,并给予错误。

这三个类被初始化为

int main()
{
A window;
B datathread;
datathread.start
//B is Qthread inherited and A,C are QDialog inherited
}

C类是从A级通过点击一个按钮,并在新窗口中打开相应的对话框初始化。 我想这一次我不会被指责为没有明确的制定我question.please上的神的名字帮我,我事先是卡在这个由长time.a非常感谢任何形式的帮助。

Answer 1:

未定义的引用A :: DataA的

你需要在的.cpp文件来定义它。 说:

std::map<int, QString> A::dataa;

另外要确保这是其他地方访问有两种选择:

  • 在此声明地图对象public一类节
  • 或有此对象的副本通过函数返回像@Jeeva建议。

现在,访问其他单位这个变量,你首先包括一类的头文件。

#include "A.h" //or something similar..

和访问它:

void B::run() //and similar with C::run(..)
{
    A::dataa //do something with it ..
}


Answer 2:

我不熟悉,QT,但我想这可能帮助。 如果你想在B级使用class'A数据或C有三种选择

  1. 继承类A的类B和C如果关系是meaningfull
  2. 创建类B&C内部类A的实例(遏制)
  3. 通过A类的像一个公共成员函数访问类A的数据

    public:

      map<int, QString> GetData() { return dataa; } 


文章来源: using a class's variable in another class function
标签: c++ qt class