在另一个类函数中使用一个类的变量
using a class's variable in another class function
我有这样的类
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。我想这一次我不会因为没有明确地提出我的问题而受到指责。请上帝的名字帮助我,因为我已经被困了很长时间了。提前非常感谢你的帮助。
对A::dataa 的未定义引用
您需要在A的.cpp文件中定义它。说:
std::map<int, QString> A::dataa;
此外,为了确保在其他地方可以访问,有两种选择:
- 在A类的
public
节中声明此映射对象 - 或者通过@Jeeva建议的函数返回该对象的副本
现在,要在其他单元中访问此变量,首先需要包含A类的头文件。
#include "A.h" //or something similar..
访问它:
void B::run() //and similar with C::run(..)
{
A::dataa //do something with it ..
}
我不熟悉QT,但我想这可能会有所帮助。如果你想在类b或c中使用类A数据,有三个选项
- 如果关系有意义,则从类A继承类B和C
- 在类B&C(安全壳)
-
通过A类的公共成员功能(如)访问A类的数据
public:
map<int, QString> GetData() { return dataa; }
相关文章:
- 用C++中的一个变量定义一个常量
- 一个变量的输入值也会保存到另一个变量中
- 将双精度变量设置为另一个变量的值
- 对具有相同方法的不同类使用一个变量
- 为什么一个变量获得与另一个值相同的值
- 尝试在 C++ 中为 ifstream 提供一个变量
- 类中的一个变量显示,但另一个不显示
- 声明一个变量,该变量在 c++ 或 c 中具有值,当程序终止时不会被销毁
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何将一个变量用于父类和派生类
- 如何在循环中使用scanf,将值存储到一个变量中,然后打印出来?
- 我如何将一个变量与另一个变量进行比较,例如我想如果(var1 > var2 x 1),然后执行此 c++
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 迭代器或反向器的一个变量
- fstream库,试图创建一个变量名为(c++)的文件
- 如何在 c++ 中将两个不同类型的变量分配给一个变量
- 如何将一些变量放在一个变量中?
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- 如何用索引命名一个变量来存储输入 mxArray?