C++ 从子类获取结构并在主类中使用
这里是我的代码的问题 我得到了一个父类C++ 从子类获取结构并在主类中使用,c++,inheritance,struct,C++,Inheritance,Struct,这里是我的代码的问题 我得到了一个父类Shape和一个子类Square struct Point { int x,y; }; class Shape { private: string name; public: void setName(string); string getName(); virtual void setVerticlePoint() { }; virtual Point getVerticlePoint(); }; 下面
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;
}
}
类方形:公共形状
{
私人:
点垂直点[4];
公众:
int noOfVerticles()常量{return 5;}
void setVerticlePoint();
Point getVerticlePoint();
};
void Square::setVerticlePoint()
{
int扩展数据,yData;
对于(int i=0;isetVerticlePoint();
//现在的问题是,我需要恢复我存储在形状[0]中的垂直点。
//这里没有问题
cout显然,您希望根据形状返回不同数量的点。为此,您可以使用std::vector
作为返回类型…例如:
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual std::vector<Point> getVerticlePoint();
};
类形状
{
私人:
字符串名;
公众:
void setName(字符串);
字符串getName();
虚拟void setVerticlePoint(){};
虚拟std::vector getVerticlePoint();
};
然后在正方形中,例如,你将返回一个4点的向量
std::vector<Point> Square::getVerticlePoint()
{
return std::vector<Point>(verticlePoint, verticlePoint+4);
}
std::vector Square::getVerticlePoint()
{
返回标准::向量(垂直点,垂直点+4);
}
显然,您希望根据形状返回不同数量的点。为此,您可以使用std::vector
作为返回类型…例如:
class Shape
{
private:
string name;
public:
void setName(string);
string getName();
virtual void setVerticlePoint() { };
virtual std::vector<Point> getVerticlePoint();
};
类形状
{
私人:
字符串名;
公众:
void setName(字符串);
字符串getName();
虚拟void setVerticlePoint(){};
虚拟std::vector getVerticlePoint();
};
然后在正方形中,例如,你将返回一个4点的向量
std::vector<Point> Square::getVerticlePoint()
{
return std::vector<Point>(verticlePoint, verticlePoint+4);
}
std::vector Square::getVerticlePoint()
{
返回标准::向量(垂直点,垂直点+4);
}
“垂直”不是一个词。“垂直”是指上下方向或位置。但我怀疑你真的是指“顶点”,意思是一个角或节点(复数“顶点”)。“垂直”不是一个词。“垂直”是指上下方向或位置。但我怀疑你真的是指“顶点”,意思是一个角或节点(复数“顶点”).但我的verticlePoint是一个点verticlePoint[4],一个数组,返回的向量会导致issue@user1578897:std::vector
有一个接受两个指针的构造函数:一个指向第一个元素的指针和一个指向“超过最后一个”的指针元素。在示例中,我使用了verticlePoint
和verticlePoint+4
,因为成员是一个数组,在这种情况下,数组“degreats”指向指向第一个元素的指针,因此代码正确地创建了一个复制数组内容的std::vector
。但我的verticlePoint是一个点verticlePoint[4],一个数组,将返回向量issue@user1578897:std::vector
有一个构造函数,它接受两个指针:一个指向第一个元素的指针和一个指向“超过最后一个”元素的指针。在示例中,我使用了verticlePoint
和verticlePoint+4
,因为成员是一个数组,在这个上下文中是数组“十年”指向指向第一个元素的指针,以便代码正确创建复制数组内容的std::vector
。