在C ++中访问抽象类的成员中的类

问题描述 投票:0回答:1

我有一个Point类,如下所示:

class Point {
private:

    int x,y;

public:


    Point(int x, int y){
        setX(x);
        setY(y);
    }

    Point(Point &copy){
        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();
    }

};
c++ class abstract point shapes
1个回答
1
投票

使用成员初始化程序

GeometricShape(Point coord) 
    : ShapePoint(coord)
{

}

我也建议将此点作为const引用const Point& coord,以避免在内存中不必要的复制。

© www.soinside.com 2019 - 2024. All rights reserved.