C++为何无法用指针引用这些派生类成员函数

2025-02-22 13:36:45
推荐回答(2个)
回答1:

代码没有问题,我将你的代码在VS2010下创建了个测试项目,仅仅把你的虚函数名改成输出的,完全没有问题,我认为是编译器差异造成的,。

 

回答2:

参考下面代码
#include
using namespace std;
struct Param{
double x,y;
};
struct CircleParam:public Param{
double z;
};
class Point
{
public:
Point(double p=0,double q=0){X=p;Y=q;cout<<"点构造完成"< Point(Point &p){X=p.X;Y=p.Y;}
virtual void Set(Param* p){X=p->x;Y=p->y;}
virtual void Print(){cout<<"( "< virtual double GetArea(){return 0;}
virtual ~Point(){cout<<"点析构函数被调用"<protected:
double X,Y;
};
class Circle:public Point
{
public:
Circle(double p=0,double q=0,double r=0){X=p;Y=q;R=r;cout<<"圆构造完成"< Circle(Circle &p){X=p.X;Y=p.Y;R=p.R;}
virtual void Set(Param* p){
CircleParam* pp=(CircleParam*)p;
X=pp->x;Y=pp->y;R=pp->z; cout<<"CircleParam"< void Print(){cout<<"( "< double GetArea(){return 3.141592653589793238*R*R;}
~Circle(){cout<<"圆析构函数被调用"<private:
double R;
};
int main(){
Point* p=new Circle;
CircleParam pa;
pa.x=0,pa.y=0,pa.z=0;
p->Set(&pa);
system("pause");
}