【发布时间】:2014-04-27 19:38:52
【问题描述】:
我正在处理关于形状的抽象基类的任务。对于最后一部分,我们需要编写一个类,它是任何先前 2D 形状的通用 3D 版本,例如。正方形。
从下面的代码中可以看出,它的构造函数采用基类指针shape*。在我的函数“getVolume”中,我基本上需要将z 乘以shape* 指向的形状的面积,这可以通过函数getArea() 来计算,该函数在每个形状各自的类中指定。但是我指的是被指向的形状吗?
class prism : public square, public rectangle, public circle {
private:
double z;
public:
prism(){z=0;}
prism(shape*, double a){z=a;}
~prism(){cout<<"Prism destructor called"<<endl;}
//Access functions
void print_(){cout<<"Prism with length = "<<z;}
double getLength(int n)const{ return z; }
void setLength(double a){z=a;}
//Other functions
double getVolume(){ return ??????????;}
};
如何引用指向的形状?我希望它会是 this->getArea() 或 shape*->getArea() 之类的东西,但我只是收到错误消息,告诉我“形状不代表值”等。
谁能提供一些帮助?
【问题讨论】:
标签: c++ pointers derived-class abstract-base-class