Reputation: 179
Here is the issue with my code
I got a parent class Shape
and a child class Square
struct Point
{
int x,y;
};
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual Point getVerticlePoint();
};
Below is 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;
}
}
So at main.cpp , i did this
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;
}
Issue is :
How do i retrieve the verticlePoint[array]
(e.g for square is verticlePoint[4]
, how do i retrieve the Point into a variable in main class, and then use a for loop to call out the x,y
of shape[0]
for verticlePoint[0]
to verticlePoint[4]
Thanks for all help!
Upvotes: 1
Views: 164
Reputation: 114599
Apparently you want to return a different number of points depending on the shape. To do this you could for example use std::vector<Point>
as return type... for example:
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual std::vector<Point> getVerticlePoint();
};
then in square, for example, you would return a vector of 4 points...
std::vector<Point> Square::getVerticlePoint()
{
return std::vector<Point>(verticlePoint, verticlePoint+4);
}
Upvotes: 1