分不多了,只能给个10分了。不好意思。问题描述如下://头文件A.h
template<class T>
class A
{
public:
    static int nVar;
    static VOID Set(int value)
    {
        n = value;
     };    static int Get()
    {
        return (n);
    };
};大家看到类中有一个静态成员nVar,还有两个静态函数Set和Get。
我在A.cpp文件中初始化如下:
template<class type> int A<type>::n = 10;
template <class type> VOID A<type>::Set(int);
template <class type> int A<type>::Get();在其它地方如此使用(譬如我的对话框类中):
int n=A<int>::nVar;
但编译时会有错误提示:
error LNK2001: unresolved external symbol "public: static int A<int>::n"实在没办法,把初始化语句改成:
int A<int>::nVar = 10;
VOID A<int>::Set(int);
int A<int>::Get();然后再调用:
int n=A<int>::nVar;
此时编译通过!这就奇了怪了,难道我定义不同类型的类时都要重新初始化过吗?譬如A<double>、A<char>等等,是不是都要在A.cpp中加上:
int A<double>::nVar = 10;
VOID A<double>::Set(int);
int A<double>::Get();int A<char>::nVar = 10;
VOID A<char>::Set(int);
int A<char>::Get();????????满脑子都是问号,如果真的一定要这么初始化,那类A的模块化就失去了意义了。大家有好的办法没有,请多多帮忙支招。分不多了,只能给10分,请见谅!
:)