我正在尝试在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行。 感谢提前帮助:)
答案 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;
}