读书人

类的静态成员 有关问题

发布时间: 2013-04-22 16:01:35 作者: rapoo

类的静态成员 问题


Class A
{
private:
static char m_szDllPathName[MAX_PATH];
static vector<APIINFO*> m_vpApiInfo;
};


如果直接在类成员函数中用的话,会报
无法解析的外部符号 "private: static char * A::m_szDllPathName" (?m_szDllPathName@CHookApi@@0PADA)
无法解析的外部符号 private: static class std::vector<struct _APIINFO *,class std::allocator<struct _APIINFO *> > A::m_vpApiInfo"

个人认为是没有初始化,但以上两种怎么初始化呢? 类
[解决办法]

//直接在类定外加
char A::m_szDllPathName[MAX_PATH];
vector<APIINFO*> A::m_vpApiInfo;

[解决办法]
1:第一种方式
char A::m_szDllPathName[]="test";
2:第二种方式
char A::m_szDllPathName[MAX_PATH]="test";

[解决办法]
你只声明了,还没有定义,当然找不到符号了
[解决办法]
static数据成员必须在类定义体的外部定义(正好一次)。
[解决办法]
链接问题,你这静态成员只是在类体中进行了声明,却没有定义,必须在类体外面定义一次。

读书人网 >C++

热点推荐