【发布时间】:2023-04-01 14:11:02
【问题描述】:
我正在制作一个程序,其中我有一个 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的? -
我的主目录中有一个“Shape2D aShape2D[100]”,我可以存储多达 100 个形状。至于 shapeXCoordi,它是一个向量,用于存储形状的每个顶点的 x 坐标,在这种情况下,是一个正方形
-
是不是因为我有一个 Shape2D 数组,所以当我调用 shapeXCoordi[0] 时,它不知道要查看哪个形状的 shapeXCoordi[0]?
标签: c++ pointers inheritance virtual-functions