Qt中定义静态成员变量报错

armourstill 2014-01-18 02:52:06
我自己写了个Task类,Blackboard类,LoginAgent类
在Blackboard类里定义了public:static QList<Task> TaskBoard;
但只要在其他地方使用TaskBoard就会报错:
loginagent.obj:-1: error: LNK2001: 无法解析的外部符号 "public: static class QList<class Task> Blackboard::TaskBoard" (?TaskBoard@Blackboard@@2V?$QList@VTask@@@@A)


找不到原因……感觉更像是C++方面的问题就发这里了,求解!
...全文
364 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
armourstill 2014-01-18
  • 打赏
  • 举报
回复
引用 7 楼 baichi4141 的回复:
[quote=引用 6 楼 armourstill 的回复:] 不行的,试过了,仍然提示重定义
上代码和报错原文[/quote] 呃,我把相关的类删除重建,结果又没问题了,估计是include有错 还是谢谢你,提醒了我没注意到的东西~
baichi4141 2014-01-18
  • 打赏
  • 举报
回复
引用 6 楼 armourstill 的回复:
不行的,试过了,仍然提示重定义
上代码和报错原文
armourstill 2014-01-18
  • 打赏
  • 举报
回复
引用 5 楼 baichi4141 的回复:
[quote=引用 4 楼 armourstill 的回复:] [quote=引用 3 楼 baichi4141 的回复:] [quote=引用 2 楼 armourstill 的回复:] [quote=引用 1 楼 baichi4141 的回复:] 静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明
我以为确实是这样,后来我自建了一个static int s; 然后再类外面初始化,提示我“重定义”……[/quote] 如果你的static int s;写在头文件中[/quote] 但static int s这句声明不放在头文件?[/quote] 不好意思,口误 应该是“static int s;写在头文件中,int ClassName::s = 0;写在源文件中”[/quote] 不行的,试过了,仍然提示重定义
baichi4141 2014-01-18
  • 打赏
  • 举报
回复
引用 4 楼 armourstill 的回复:
[quote=引用 3 楼 baichi4141 的回复:] [quote=引用 2 楼 armourstill 的回复:] [quote=引用 1 楼 baichi4141 的回复:] 静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明
我以为确实是这样,后来我自建了一个static int s; 然后再类外面初始化,提示我“重定义”……[/quote] 如果你的static int s;写在头文件中[/quote] 但static int s这句声明不放在头文件?[/quote] 不好意思,口误 应该是“static int s;写在头文件中,int ClassName::s = 0;写在源文件中”
armourstill 2014-01-18
  • 打赏
  • 举报
回复
引用 3 楼 baichi4141 的回复:
[quote=引用 2 楼 armourstill 的回复:] [quote=引用 1 楼 baichi4141 的回复:] 静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明
我以为确实是这样,后来我自建了一个static int s; 然后再类外面初始化,提示我“重定义”……[/quote] 如果你的static int s;写在头文件中[/quote] 但static int s这句声明不放在头文件?
baichi4141 2014-01-18
  • 打赏
  • 举报
回复
引用 2 楼 armourstill 的回复:
[quote=引用 1 楼 baichi4141 的回复:] 静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明
我以为确实是这样,后来我自建了一个static int s; 然后再类外面初始化,提示我“重定义”……[/quote] 如果你的static int s;写在头文件中
armourstill 2014-01-18
  • 打赏
  • 举报
回复
引用 1 楼 baichi4141 的回复:
静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明
我以为确实是这样,后来我自建了一个static int s; 然后再类外面初始化,提示我“重定义”……
baichi4141 2014-01-18
  • 打赏
  • 举报
回复
静态变量必须在类定义以外定义,在类定义里写的算声明 因为类定义或者叫类声明,是告诉编译器这个类是什么样子,类本身不占内存,而静态变量却必须有内存才能存在,所以不能和类一起声明

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧