getter()的C ++左边必须有class / struct / union

时间:2016-04-19 07:05:39

标签: c++ class oop pointers getter

我正在尝试在C ++中对类继承进行练习。主要的想法是我有一个点类(用2个坐标定义一个点),我有不同的形状(如矩形,正方形,三角形......等)

我的point类有一些名为getX()和getY()的getter,它们都返回double值。

在我的所有形状类(矩形,正方形,三角形)中,我都有一个打印方法,可以将其类成员打印到控制台。在那个方法中,我需要得到一个Point实例的x和y。问题是,当我这样做时,我得到以下编译错误:

error C2228: left of '.getX' must have class/struct/union

以下是一些包含其余代码的粘贴代码:

点类标题:http://pastebin.com/vA29dTkE

Point class cpp文件:http://pastebin.com/E8GKrsHT

Rectangle类标题:http://pastebin.com/pXNXX18q

Rectangle类cpp文件:http://pastebin.com/R09vgfdb

问题出现在矩形类cpp文件的第18行和第19行。 感谢提前帮助:)

1 个答案:

答案 0 :(得分:0)

 point rectangle::origin(double, double);

是一个需要两个双打的函数,因此您必须将其称为:

double rectangle::draw()
{
    std::cout << "Rectangle membembers:\n";
    //x = this->origin.getX();
    std::cout << this->width;
    std::cout << this->height;
    std::cout << this->origin(0, 0).getX(); // here
    std::cout << this->origin(0, 0).getY(); // here
}

您可能想要声明并将其用作:

class rectangle : polygon
{
private:
    point origin;
};

rectangle::rectangle(double x, double y, double width, double height)
 : origin(x, y) {
    this->width = width;
    this->height= height;
}