菜鸟提问:class template , static class member
shex4 2009-07-06 11:13:31 编程时遇到一个问题,简单说情况如下:
头文件:silly.h
#ifndef silly_h_
#define silly_h_
#include < vector >
using std::vector ;
template < typename T , int m > // class A 基于两个参数,一个是任意类型,一个是 int .
class A{
protected:
vector<T> group ;
static int limit ; // static class member
public:
int Limit() { return A::limit ; }
A() ;
};
#endif
相关的 .cc 文件
#include "silly.h"
template < typename T , int m > // 初始化静态成员
int A<T, m > ::limit = 0 ;
template < typename T , int m > // 给静态成员赋值
A<T,m>::A()
{
limit = m ;
}
主程序:
int main ()
{
A<int , 5 > a1 ;
A<int, 7 > a2 ;
cout << a1.Limit() << endl; // 希望输出结果是 5 和 7
cout << a2.Limit() << endl;
return 0;
}
可以编译 , 但是不能运行,fatal error LNK1120: 1 unresolved externals。 向大家请教。
我的想法就是,程序运行时有两个 limit, 一个属于 A<int, 5> 这个类, 还有一个属于 A<int, 7> 这个类。