当前位置: 代码迷 >> VC >> 子类声明一个对象时出现LINK2001异常 求教
  详细解决方案

子类声明一个对象时出现LINK2001异常 求教

热度:1627   发布时间:2013-02-25 00:00:00.0
子类声明一个对象时出现LINK2001错误 求教
建了一个控制台应用程序 

头文件 父类子类如下:
int  Functio1(void);
class Box{
public:  virtual int Function2();

};

class BoxSon : public Box
{
public: int Function2();
};
cpp文件 

int BoxSon::Function2()
{
int c = 2;
return c;
}

 BoxSon *BoxSon1;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<*BoxSon1->Function2()<<endl;
getchar();
return 0;
}
当我子类声明对象 BoxSon BoxSon1时 会出现link2001错误

没找到解决办法 我就如此声明BoxSon *BoxSon1 链接错误没有 但是运行到cout<<*BoxSon1->Function2()<<endl;
时 会提示内存访问错误。

问题如下 

1 为什么 BoxSon BoxSon1 会出新链接错误 而BoxSon *BoxSon1没有?两者有什么区别?

2 cout<<*BoxSon1->Function2()<<endl; 为什么会出现内存读取错误?

ps: 我用的是vs2005中文版+windows7 32bit

------解决方案--------------------------------------------------------
 BoxSon *BoxSon1;
需要实例化一个对象哦!
------解决方案--------------------------------------------------------
BoxSon *BoxSon1;需要实例化,比如BoxSon *BoxSon1=new BoxSon();
------解决方案--------------------------------------------------------
另外父类中的virtual int Function2();可以写成virtual int Function2()=0;作为纯虚函数。
  相关解决方案