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