• 4898阅读
  • 4回复

[提问]Qt中使用static问题 [复制链接]

上一主题 下一主题
离线ajaxhe
 
只看楼主 倒序阅读 楼主  发表于: 2012-01-05
关键词: QT4

自定义了一个类,申明了一个静态变量
class FoldWidget: public QWidget
{
    Q_OBJECT
private:
        static int m_numOfDevice;
}
编译却无法通过,

正在链接...
foldWidget.obj : error LNK2001: 无法解析的外部符号 "private: static int FoldWidget::m_numOfDevice" (?m_numOfDevice@FoldWidget@@0HA)
C:\Users\ajaxhe\Desktop\Program\Qt\dvsMainWidget\Debug\dvsMainWidget.exe : fatal error LNK1120: 1 个无法解析的外部命令
生成日志保存在“file://C:\Users\ajaxhe\Desktop\Program\Qt\dvsMainWidget\Debug\BuildLog.htm”
dvsMainWidget - 2 个错误,0 个警告


实在没有看出来哪里出了问题,还请大家帮忙看看
离线jdwx

只看该作者 1楼 发表于: 2012-01-05
回 楼主(ajaxhe) 的帖子
int FoldWidge::m_numOfDevice = 0;
把上面一行加到这个类的cpp文件#include和构造函数的中间。
google一下关于静态变量的初始化的内容。

发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线ajaxhe
只看该作者 2楼 发表于: 2012-01-05
回 1楼(jdwx) 的帖子
受教了,自我鄙视下
离线jdwx

只看该作者 3楼 发表于: 2012-01-06
我认为这个问题不是写程序的人多问题,而是制定C++标准的人的问题,不该这么繁琐。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线ajaxhe
只看该作者 4楼 发表于: 2012-01-07
回 3楼(jdwx) 的帖子
后面深入了解了下这个机制,还是很有必要的。毕竟类在声明的时候并不分配内存空间。而如果在创建对象的时候给静态成员变量分配空间,那静态变量的就退化为一般成员变量了。所以在类外显示初始化看起来是个折中方案。
快速回复
限100 字节
 
上一个 下一个