建了一个控制台应用程序
头文件 父类子类如下:
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;作为纯虚函数。