【发布时间】:2012-07-10 05:14:47
【问题描述】:
我有这样的课程
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
}
类 C 是通过单击类 A 上的按钮并在新窗口中打开其对话框从类 A 初始化的。 我想这一次我不会因为没有明确提出我的问题而受到指责。请上帝帮助我,因为我长期以来一直被困在这个问题上。非常感谢任何形式的帮助。
【问题讨论】:
-
“它不工作并给出错误” - 错误是什么?同样一般来说,您不应该尝试从一个类到另一个类访问这样的数据,尤其是从线程中。相反,将数据从 A 类注入到 B 类。
-
对 A::dataa 的未定义引用和另一个对 A::dataa 的未定义引用 collect2: ld 返回 1 退出状态我不知道注入方法。你可以编辑我的代码并粘贴它在你的答案中