类静态成员为类模版,链接时 无法解析

GKatHere 2017-02-09 10:13:25
RT:类静态成员为类模版,链接时产生:error LNK2001: 无法解析的外部符号
例: VS 2010

template<long sz>
class
ZeroStack
{
void DoIt(){};
}
struct A
{
static ZeroStack<-1> zs;
};
A::zs.DoIt(); // error LNK2001: 无法解析的外部符号
A().zs.DoIt(); // error LNK2001: 无法解析的外部符号

...全文
86 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2017-02-09
  • 打赏
  • 举报
回复
楼主看教材要认真点啊,类的static成员一般都要在类外定义啊。
yes-hyh 2017-02-09
  • 打赏
  • 举报
回复
最后应该是

template<long sz>
class ZeroStack
{
public:

	void DoIt() {};
};

struct A
{
	static ZeroStack<-1> zs;
};

ZeroStack<-1> A::zs;

int main()
{
	A::zs.DoIt(); 
	A().zs.DoIt(); 

	return 0;
}
yes-hyh 2017-02-09
  • 打赏
  • 举报
回复
而且

A::zs.DoIt(); 
A().zs.DoIt();
这两句应该写在某个函数中,还有void DoIt(){}这个函数应该使用public访问限定,class最后哎有分号
yes-hyh 2017-02-09
  • 打赏
  • 举报
回复
static ZeroStack<-1> zs; 这个东西有没有定义??? 在struct外部cpp中像这样定义

ZeroStack<-1> A::zs;

64,643

社区成员

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

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