static的问题
work.h
class CWork
{
public:
CWork(void);
~CWork(void);
void GetUrl();
static list <string> listUrl;
};
work.cpp
CWork::CWork(void)
{
}
CWork::~CWork(void)
{
}
void CWork::GetUrl()
{
CGetUrlFile urlFile;
CWork::listUrl = urlFile.GetUrl();
}
编译不通过,提示listUrl无法解析的外部符号
[解决办法]
在work.cpp里加一行
static CWork::list <string> listUrl;
编译不通过,提示listUrl无法解析的外部符号
--------
楼主注意,这个提示是链接程序报的,是链接不通过,而不是编译。
[解决办法]
#include <list>
#include <string>
using namespace std;
类外
list <string> CWork::listUrl;
[解决办法]
//work.h
#ifndef CWORK_H_
#define CWORK_H_
#include <list>
#include <string>
using namespace std;
class CWork
{
public:
CWork(void);
~CWork(void);
void GetUrl();
static list <string> listUrl;
};
#endif
//work.cpp
#include "work.h "
CWork::CWork(void)
{
}
CWork::~CWork(void)
{
}
void CWork::GetUrl()
{
CGetUrlFile urlFile;
CWork::listUrl = urlFile.GetUrl();
}
[解决办法]
//work.h
//-------
#ifndef CWORK_H_
#define CWORK_H_
#include <list>
#include <string>
using namespace std;
class CWork
{
public:
CWork(void);
~CWork(void);
void GetUrl();
static list <string> listUrl;
};
#endif
//work.cpp
//--------
//work.cpp
#include "work.h "
list <string> CWork::listUrl;
CWork::CWork(void)
{
}
CWork::~CWork(void)
{
}
void CWork::GetUrl()
{
CGetUrlFile urlFile;
CWork::listUrl = urlFile.GetUrl();
}
[解决办法]
class的static成员变量,需要在class之外单独再定义一次
[解决办法]
楼上几位说得对,static成员变量在类构造前就已经存在了,所以,必须在cpp文件中函数外的任意位置进行初始化,或者在main函数中,你定义那个类之前,先初始化它的static成员变量。
另外一点我没看明白,你的listUrl变量是个list <String> ,你的用的直接赋值,是不是应该用list自带的添加函数(可能是add之类的)啊。。。
[解决办法]
要把静态成员的声明放在CPP文件当中.
work.cpp
#include "work.h "
list <string> CWork::listUrl;