怎样用stl中的queue定义static变量?(在链接时出现奇怪问题)
定义一个类,定义非静态queue的变量,编译、链接没问题;但若是将变量改为static ,链接出问题,使用vc6.0。如:
class CA
{
public:
static queue<int> iqueue;
static void func(){iqueue.push(6);}
}
出错:
Linking...
A.obj : error LNK2001: unresolved external symbol "public: static class std::queue<int,class std::deque<int,class std::allocator<int> > > CA::iqueue" (?iqueue@CA@@2V?$queue@HV?$deque@HV?$allocator@H@std@@@std@@@std@@A)
Debug/ning6.exe : fatal error LNK1120: 1 unresolved externals
值得注意的是若去掉两个static关键字,无任何问题。
为什么呀?
问题点数:30、回复次数:4Top
1 楼strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)回复于 2006-03-04 15:48:20 得分 5
类中的静态变量需要在外部初始化,这个跟C#不同Top
2 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 21:39:40 得分 25
static queue<int> iqueue;
~~~~~~~
在类外
class CA
{
public:
static queue<int> iqueue;
static void func(){iqueue.push(6);}
}
// 加上这一句
queue<int> CA::iqueue;Top
3 楼wzjall(风)回复于 2006-03-04 22:56:36 得分 0
恩,很基础的一个问题Top
4 楼bohlee(我心澎湃)回复于 2006-03-14 17:45:54 得分 0
markTop




