为何会出现ERROR LNK2001呢? 请教...

hjj8633976 2010-05-10 08:49:08
#include <iostream>
using namespace std;

class Foo //定义一个Foo类
{
public:
Foo(int x){y=x;} //接受一个参数的构造函数
//friend void main();
int get() //返回私有函数Y的值
{
return y;
}
private:
static int y; //静态私有数据成员
};

class Bar //定义一个Bar类
{

public:
Foo Fooval()
{
callsFooval++;
return val;
}
int getcall()
{
return callsFooval;
}
private:
static int callsFooval; //静态数据成员
static int x; //静态数据成员
static Foo val; //静态Foo类数据成员
};

int Bar::x(20);
Foo Bar::val(15);
int Bar::callsFooval=0;

void main()
{
Foo ac1=Foo(5);
Foo *ac2=new Foo(6);
Bar br1;

//int x;
cout << "ac1:" << ac1.get() << endl;
cout << "ac2:" << ac2->get() << endl;
cout << "br.getcall:" << br1.getcall() << endl;

}


错误代码
1>xiguo.obj : error LNK2001: 无法解析的外部符号 "private: static int Foo::y" (?y@Foo@@0HA)
1>D:\Backup\xiguo\Debug\xiguo.exe : fatal error LNK1120: 1 个无法解析的外部命令
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjj8633976 2010-05-10
  • 打赏
  • 举报
回复
是不是我在Foo类里面提供了构造函数而没有对数据成员进行初始化而发生的错误?

刚刚GOOOGLE了下~~原来要显式的定义静态成员!!谢谢您~~~
hjj8633976 2010-05-10
  • 打赏
  • 举报
回复
楼上的大大能解释下么??
谢谢...
昵称很不好取 2010-05-10
  • 打赏
  • 举报
回复
在Foo类下面添加一句
int Foo::y;

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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