啊自己找不到问题!!
这是我在学习类的组合时遇到的问题,我在组合类中声明了两个内嵌类的对象,然后报错点应该是组合类的成员函数中访问了内嵌类的对象的公有函数。
代码例如下:(组合类的声明片段)
class Rectangle {
public:
Rectangle(int x1, int y1, int x2, int y2, int c);
void printR() {
cout << "This is a Ractangle.The position is " << endl;
cout << "(" << p1.GetX() << "," << p1.GetY() << ")" << endl;
cout << "(" << p2.GetX() << "," << p2.GetY() << ")" << endl;
}
int Getcolor() {
return color;
}
int square_feet() {
int mianji = abs(p1.GetX() - p2.GetX()) * (p1.GetY() - p2.GetY());
return mianji;
}
private:
Point p1;
Point p2;
int color;
};
比如:函数square_feet中访问了p1对象的GetX()函数等等,将square_feet函数和printR函数的内容删掉就不报错了。
报错内容如下:
抱歉,我出错的原因是我没有编写GetX()函数和GetY()函数的内容。真的是要谨记!!!
这段代码单独运行应该是没啥问题,你是不是调用的地方有问题
那么我觉得可能是Point类定义时没有将GetX()和GetY()函数定义为公有函数导致的。在Point类中,确认GetX()和GetY()函数前面是否有关键字"public:"。如果没有,将它们放在"public:"之后,这样Rectangle类中的成员函数就可以访问Point类的GetX()和GetY()函数了。
class Point
{
public:
int GetX()
{
return x;
}
int GetY()
{
return y;
}
private:
int x, y;
};
注意在Point类的定义中,GetX()和GetY()函数前面有"public:"关键字,这就意味着这两个函数是公有函数,可以被外部类访问。
仅供参考,望采纳,谢谢。