C++ 在类里定义static string变量错误。

GeniusChips 2011-03-15 02:48:47
我在C++中的一个类里声明了一个static 的string变量,结果编译的时候有LVK2001错误,这个谁能帮我解答下,谢谢了。我只要去除掉static 就能编译通过。
...全文
807 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
eamoondxy 2011-03-15
  • 打赏
  • 举报
回复
给分很犀利。。。嘿嘿。。。
eamoondxy 2011-03-15
  • 打赏
  • 举报
回复
楼主给给很犀利。。。。。不解释。。
delphiwcdj 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qq120848369 的回复:]

C/C++ code

class condbkeyword
{
private:
static std::string m_keyword;
public:
void setkeyword(const std::string);
}

std::string condbkeyword::m_keyword;
[/Quote]
静态成员要在类外初始化
GeniusChips 2011-03-15
  • 打赏
  • 举报
回复
谢谢啦,问题解决啦。果然是初始化问题。
qq120848369 2011-03-15
  • 打赏
  • 举报
回复

class condbkeyword
{
private:
static std::string m_keyword;
public:
void setkeyword(const std::string);
}

std::string condbkeyword::m_keyword;

辰岡墨竹 2011-03-15
  • 打赏
  • 举报
回复

class condbkeyword
{
private:
static std::string m_keyword;
public:
void setkeyword(const std::string);
}

std::string condbkeyword::m_keyword = std::string();


这样的。
小小攻城师 2011-03-15
  • 打赏
  • 举报
回复
#include<string>

class condbkeyword
{
private:
static std::string m_keyword;
public:
void setkeyword(const std::string);
};
int main()
{
return 0;
}
辰岡墨竹 2011-03-15
  • 打赏
  • 举报
回复
应该是:
std::string condbkeyword::m_keyword = std::string();
抱歉,一时手滑,写错了。
GeniusChips 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bokutake 的回复:]
在类定义里的静态成员是不能被构造过程初始化,所以你必须手动初始化,方法就是在类定义外部,用
类型 类名::成员名 = 初始值
的方式初始化。
比如
string A::str1 = "";
这个初始化过程不需要static,即使私有成员也必须这样初始化。
[/Quote]
谢谢了。是说只要在哪个类的问价下+一个初始化接好了是吗?
辰岡墨竹 2011-03-15
  • 打赏
  • 举报
回复
你这个需要在类定义后面再写个 std::string m_keyword = std::string();
辰岡墨竹 2011-03-15
  • 打赏
  • 举报
回复
在类定义里的静态成员是不能被构造过程初始化,所以你必须手动初始化,方法就是在类定义外部,用
类型 类名::成员名 = 初始值
的方式初始化。
比如
string A::str1 = "";
这个初始化过程不需要static,即使私有成员也必须这样初始化。
GeniusChips 2011-03-15
  • 打赏
  • 举报
回复
我只是想做一个用静态函数,能记住链接关键字的链接数据库的类,结果编译的时候就产生了LNK 2001的错误
框架代码还用吗?。那个目前还是个MFC产生的空壳子
keykeylove 2011-03-15
  • 打赏
  • 举报
回复
不错啊,嘿嘿
GeniusChips 2011-03-15
  • 打赏
  • 举报
回复

#include<string.h>

class condbkeyword
{
private:
static std::string m_keyword;
public:
void setkeyword(const std::string);
}
//目前只写了这么多,还有个ODBC链接的暂时没有加上呢。
LinuxBirdMan 2011-03-15
  • 打赏
  • 举报
回复
贴代码。。。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧