我有这样的课程
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中使用该变量dataa。我看到我们必须将其声明为静态并在B和C类中将其用作A :: data但它不是工作和给出错误。
这三个类初始化为
int main()
{
A window;
B datathread;
datathread.start
//B is Qthread inherited and A,C are QDialog inherited
}
通过单击A上的按钮并在新窗口中打开其对话框,从A类初始化C类。 我猜这一次我不会因为没有明确地提出我的问题而受到指责。对于神的名字请帮助我,因为我长期坚持这一点。非常感谢提前获得任何帮助。
答案 0 :(得分:0)
我不熟悉QT,但我想这可能会有所帮助。如果你想在b或c类中使用class'A数据,有三个选项
通过类A的公共成员函数访问A类的数据,如
public:
map<int, QString> GetData()
{
return dataa;
}
答案 1 :(得分:0)
对A :: dataa的未定义引用
您需要在A的.cpp文件中定义它。说:
std::map<int, QString> A::dataa;
另外,为确保在其他地方可以访问,有两种选择:
public
部分声明此地图对象现在,要以其他单位访问此变量,首先要包含A类的头文件。
#include "A.h" //or something similar..
要访问它:
void B::run() //and similar with C::run(..)
{
A::dataa //do something with it ..
}