我正在为形状进行抽象基类的作业。对于最后一部分,我们需要编写一个类,它是任何先前 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()
但我只是得到错误,告诉我“形状不代表一个值”等。
任何人都可以提供一些帮助吗?