首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

静态成员有关问题,为什么会出错

2012-02-19 
静态成员问题,为什么会出错?#includeiostreamusingnamespacestdclassCSell{public:staticfloataverage(

静态成员问题,为什么会出错?
#include   <iostream>

using   namespace   std;

class   CSell
{
public   :
static   float   average()
{
return   sum/n;
}
static   void   display()
{
cout < <sum < < '   ' < <average() < <endl;
}
CSell(int   numn,int   quantityn,float   pricen):num(numn),quantity(quantityn)
{
float   discount=1.0;
if   (quantity> 10)   discount=0.95;
price*=discount;
sum+=price*quantity;
n+=quantity;
}
private:
int   num;
int   quantity;
float   price;
static   float   sum;
static   int   n;


};

void   main()
{
CSell   a(101,5,23.5),b(102,12,24.56),c(103,100,21.5);
CSell::display();
system( "pause ");
}

error   LNK2019:   无法解析的外部符号   "private:   static   float   CSell::sum "   (?sum@CSell@@0MA),该符号在函数   "public:   static   void   __cdecl   CSell::display(void) "   (?display@CSell@@SAXXZ)   中被引用
怎么回事啊?

[解决办法]
在main 上面加上

float CSell::sum;
int CSell::n;

静态变量要在全局环境给它们声明和初始化。
[解决办法]

没有定义啊. static数据成员的定义有点奇怪,要放到外面.

class CSell{...};

float CSell::sum = 0.0;
int CSell::n = 0;

[解决办法]
class CSell{...};

float CSell::sum = 0.0;
int CSell::n = 0;
[解决办法]
static float sum;
static int n;
这两个成员你没有定义,因为静态数据成员在类中的部分只是“声名”,而非定义。要想定义,应该在类体外面:
float CSell::sum = X.X;
int CSell::n = X;

热点排行
Bad Request.