我有一个Point类,如下所示:
class Point {
private:
int x,y;
public:
Point(int x, int y){
setX(x);
setY(y);
}
Point(Point ©){
x = copy.getX();
y = copy.getY();
}
int getX(){
return x;
}
int getY(){
return y;
}
void setX(int setx){
x = setx;
}
void setY(int sety){
y = sety;
}
void print(){
cout << "(" << getX() << "," << getY() << ")" << endl;
}
};
我正在尝试创建一个名为GeometricShape的Abstract类,该类能够利用其构造函数中的一个点,然后在其成员中调用该点。
我尝试声明一个Point,然后利用副本构造函数构造GeometricShape。但是,我似乎无法在没有获得“没有匹配函数来调用'Point :: Point()'GeometricShape(Point coord)的情况下使此工作正常工作。
我也试图用以下方法在构造函数中声明点:
Point ShapePoint = coord;
但是我无法访问打印成员中的ShapePoint。
我现在在这里:
class GeometricShape{
Point ShapePoint;
public:
GeometricShape(Point coord){
ShapePoint = Point(coord);
}
virtual float getArea(){
return 0;
}
virtual float getPerimeter(){
return 0;
}
virtual void print(){
ShapePoint.print();
}
};
使用成员初始化程序
GeometricShape(Point coord)
: ShapePoint(coord)
{
}
我也建议将此点作为const引用const Point& coord
,以避免在内存中不必要的复制。