1
我正在做一个项目,其中我有一个Square
类,这是Shape
类子类无法访问父类的变量
的子类,但我的程序崩溃时,子类尝试从父类访问变量。
这里是我的代码:
class Shape2D
{
public:
string shape;
void setShape(string newShape);
string getShape();
string specialType;
void setSpecialType(string newSpecialType);
vector <int> shapeXCoordi;
void setshapeXCoordi(int newshapeXCoordi);
vector <int> shapeYCoordi;
void setshapeYCoordi(int newshapeYCoordi);
void toString();
virtual int computeArea()
{
return 0;
}
void displayArea();
};
出于测试目的,我只能让这个computeArea()
返回x坐标。
class Square : public Shape2D
{
public:
int computeArea()
{
return shapeXCoordi[0];
}
};
int main()
{
if (aShape2D[0].getShape() == "Square")
{
Shape2D *pShape2D;
pShape2D = &aSquare;
cout << "Area: " << pShape2D -> computeArea() << endl;
}
}
我做了几个测试,如果我改变return shapeXCoordi[0];
到return 123;
,它工作正常。
我也试过return shape;
但它不会显示任何东西,虽然这次它不会崩溃。
所以我猜有什么不对,当SquareClass
试图访问从ShapeClass
shapeXCoordi[0]
任何人都可以见识一下这种情况呢?
这可能与继承无关。你如何初始化'aShape2D',以及如何初始化'shapeXCoordi'? – Mankarse
我在我的主体中有一个'Shape2D aShape2D [100]',因此我可以存储多达100个形状。至于shapeXCoordi,它是一个矢量,它存储形状的每个顶点的x坐标,在这种情况下,一个正方形 – user1793001
这是由于我有一个Shape2D数组,因此当我调用shapeXCoordi [0 ]它不知道要查看哪个形状的shapeXCoordi [0]? – user1793001