error LNK2001: 无法解析的外部符号 "private: static float Product:sum" (?sum@Product@@0MA解决方法

error LNK2001: 无法解析的外部符号 "private: static float Product::sum" (?sum@Product@@0MA
两个错误error LNK2001: 无法解析的外部符号 "private: static float Product::sum" (?sum@Product@@0MA)
 fatal error LNK1120: 1 个无法解析的外部命令
#include "stdafx.h"
#include<iostream>
using namespace std;
class Product
{
public:

Product(int n,int q,float p ):num(n),quantity(q),price(p){};
void tatal();
static float average();
static void display();

private:
int num;
int quantity;
float price;
static int n;
static float discount;
static float sum;
};

void Product::tatal()
{ double rate=1.0;
if(quantity>10)
rate=0.98*rate;
sum=sum+quantity*(1-discount);
n=n+quantity;
}

void Product::display()
{
cout<<sum<<endl;
cout<<average()<<endl;
}

float Product::average()
{
return(sum/n);
}

float Product::discount=0.05f ;
float num=0;
int Product::n=0;





int _tmain(int argc, _TCHAR* argv[])
{
Product Prod[3]=
{
Product(101,5,23.5f),Product(102,12,24.56f),Product(103,100,21.5f)
};
for (int i=0;i<3;i++)
{  
Prod[i].tatal();
Product::display();
return 0;
}
}
求大神帮忙看下哪里出现问题了。。。刚接触c++一直没怎么编译成功过


------解决思路----------------------
tatal()是非静态成员函数,sum是静态成员变量。在tatal函数中不能使用静态变量sum
------解决思路----------------------
float Product::sum = 0;这里加一句, static成员变量必须要在类外定义
void Product::tatal()
{......}