以下是我的代码
的问题我有一个父类Shape
和一个子类Square
struct Point
{
int x,y;
};
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual Point getVerticlePoint();
};
下面是Square.cpp
class Square: public Shape
{
private:
Point verticlePoint[4];
public:
int noOfVerticles() const { return 5; }
void setVerticlePoint();
Point getVerticlePoint();
};
void Square::setVerticlePoint()
{
int xData,yData;
for(int i=0; i<4; i++)
{
cout << "Please enter x-ordinate of pt." << i << " :";
cin > xData;
cout << "Please enter y-ordinate of pt." << i << " :";
cin >> yData;
verticlePoint[i]->x = xData;
verticlePoint[i]->y = yData;
}
}
所以在main.cpp,我做了这个
int main()
{
Shape *point[5];
Point vertic`lePoint;
Square *cro = new Square();
// some codes in between
// now i prompt for verticle point
shape[0] = squr;
//assuming myShape & myType is some string value
shape[0]->setName(myShape);
shape[0].setType(myType);
//here i will be prompt to key in 4 times of X & y Ordinate of the verticle point
shape[0]->setVerticlePoint();
//Now the issue is i need to retrieve back my verticle point that i store in shape[0].
//here no issue
cout << "Get Name: " << shape[0]->getName() << endl;
cout << "Get Data:" << shape[0]->getType() << endl;
//the top 2 works
//this is the issue
verticlePoint = shape[0]->getVerticlePoint();
cout << sizeof(verticlePoint);
//it output as size 8 , no matter which shape i use, i got other shapes with different verticle point.
return 0;
}
问题是:
如何检索verticlePoint[array]
(例如,对于square是verticlePoint[4]
,如何将Point检索到主类中的变量,然后使用for循环调出{{1} x,y
shape[0]
到verticlePoint[0]
verticlePoint[4]
感谢您的帮助!
答案 0 :(得分:1)
显然,您希望根据形状返回不同数量的点。为此,您可以使用std::vector<Point>
作为返回类型...例如:
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual std::vector<Point> getVerticlePoint();
};
例如,然后在正方形中,你将返回一个4点的矢量......
std::vector<Point> Square::getVerticlePoint()
{
return std::vector<Point>(verticlePoint, verticlePoint+4);
}