fatal error LNK1120: 2 unresolved externals

cuilll 2013-06-18 11:06:39
#include <iostream>
using namespace std;
#include <string>

class Stud
{
private:
int no; //学号
string name; //姓名
double deg; //成绩
static double sum; //总分
static int num; //人数

public:
Stud(int no=0,string name="noName",double deg=0.0)
{

this->no=no;
this->name=name;
this->deg=deg;
this->num+=1;
this->sum+=deg;
}

void setdata(int no,string name,double deg)
{
this->no=no;
this->name=name;
this->deg=deg;
this->sum=(sum-this->deg+deg);
//如果在构造函数中给了成绩,这里又要重新设置,先把原来给的减掉再加上这里新设置的,避免了成绩重复累加


}
void disp()
{
cout<<this->no<<"\t" <<this->name<<"\t" <<this->deg<<"\t"<<endl;
}
static double avg()
{

double average=Stud::sum/Stud::num;

return average;

}


};

int main(int argc, char *argv[])
{


Stud student[5];

int no;
string name=NULL;
double deg;
for(int i=0;i<5;i++)

{

cout<<"请输入学号:"<<endl;
cin>>no;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入成绩:"<<endl;
cin>>deg;

student[0].setdata(no,name,deg);

}


//显示每个同学的成绩
cout<<"学号"<<"\t" <<"姓名"<<"\t" <<"成绩"<<"\t"<<endl;
for(int j=0;j<5;j++)
{

student[0].disp();
}


//输出平均成绩
cout<<endl<<"平均成绩为"<<Stud::avg();




return 0;


}




...全文
134 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hugett 2013-06-18
  • 打赏
  • 举报
回复
静态变量需要在类外定义。。

#include <iostream>
using namespace std;
#include <string>

class  Stud
{
private:
	int no;       	 //学号 
	string name;  	 //姓名 
	double deg;	 //成绩 
	static double sum;	//总分 
	static int  num;	//人数
public:
	Stud(int no=0,string name="noName",double deg=0.0)
	{
		this->no=no;
		this->name=name;
		this->deg=deg;
		this->num+=1;
		this->sum+=deg;
	}

	void setdata(int no,string name,double deg)
	{
		this->no=no;
		this->name=name;
		this->deg=deg;
		this->sum=(sum-this->deg+deg);
		//如果在构造函数中给了成绩,这里又要重新设置,先把原来给的减掉再加上这里新设置的,避免了成绩重复累加 
	}
	void disp()
	{
		cout<<this->no<<"\t" <<this->name<<"\t" <<this->deg<<"\t"<<endl;
	}
	static double avg()
	{
		double  average=Stud::sum/Stud::num;

		return average;
	}
};

double Stud::sum;//静态变量需要在类外定义。。
int Stud::num;

int main(int argc, char *argv[])
{
	Stud student[5];
	int no;
	string name=NULL;
	double deg;
	for(int i=0;i<5;i++)
	{
		cout<<"请输入学号:"<<endl;
		cin>>no; 
		cout<<"请输入姓名:"<<endl;
		cin>>name; 
		cout<<"请输入成绩:"<<endl;
		cin>>deg; 

		student[0].setdata(no,name,deg);
	} 


	//显示每个同学的成绩 
	cout<<"学号"<<"\t" <<"姓名"<<"\t" <<"成绩"<<"\t"<<endl;
	for(int j=0;j<5;j++) 
	{
		student[0].disp();
	}

	//输出平均成绩 
	cout<<endl<<"平均成绩为"<<Stud::avg(); 

	return 0;
}

cuilll 2013-06-18
  • 打赏
  • 举报
回复
编译能通过 Compiling... Skipping... (no relevant changes detected) 新建 文本文档.cpp 新建 文本文档.obj - 0 error(s), 0 warning(s) 执行时报错 --------------------Configuration: 新建 文本文档 - Win32 Debug-------------------- Linking... 新建 文本文档.obj : error LNK2001: unresolved external symbol "private: static double Stud::sum" (?sum@Stud@@0NA) 新建 文本文档.obj : error LNK2001: unresolved external symbol "private: static int Stud::num" (?num@Stud@@0HA) Debug/新建 文本文档.exe : fatal error LNK1120: 2 unresolved externals 执行 link.exe 时出错. 这是为啥啊?????

33,311

社区成员

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

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