在Qt中使用全局变量的两种方式,及出现无法解析的命令的问题

90 篇文章 8 订阅
64 篇文章 10 订阅

很多小伙伴在Qt编程时,不会使用全局变量,其实基本有两种方式来定义使用全局变量,第一种是根据c/c++的extern来进行多文件的使用,第二种方法就是把全局变量放在类中,当做类静态变量来使用,一般来说,第一种方式严重破坏了类的封装,所以还是推荐第二种方式.下面给出简单的示例:

1.先在一个.h文件中声明一个类:
//c.h
#ifndef C_H
#define C_H
class QPos
{
public:
static int x;  //注意关键字static
static int y;
};
#endif  //C_H

2.在.cpp文件里类中的成员进行定义:
//c.cpp
#include "c.h"

int QPos::x = 10;   //必须要在对应的.cpp文件中进行初始化,否则会被报错!!
int QPos::y = 20;

3.然后就可以在其他文件中使用这些全局变量了.
//m.cpp
#include
#include "c.h"
m::m(QWidget *parent) : QWidget(parent)
{
   ui.setupUi(this);
   c::x= 50;  /
   c::y= 70;
   ...
}


切记对静态变量必须的初始化必须要在类外进行,同时不能在.h头文件中进行,应该在对应的.cpp中进行,否则会出现无法解析的错误.
如下所示:

【1】如下代码及编译错误

 

如标题,不做赘述。

【2】原因及解决方案

原因:之所以报如上编译错误,因为静态成员变量未初始化。

解决方案:类中静态成员需要在类外进行初始化。其格式为:类型 类名::静态成员变量名 = 默认值;

初始化后,再编译。结果如下图:

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值