过载-不在范围内

Overload - not in scope

本文关键字:范围内 过载      更新时间:2023-10-16

我得到这些错误:

circleType.cpp||In function 'std::ostream& operator<<(std::ostream&, circleType&)':|
circleType.cpp|48|error: 'getRadius' was not declared in this scope|
circleType.cpp|49|error: 'circumference' was not declared in this scope|
circleType.cpp|50|error: 'area' was not declared in this scope|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 0 seconds) ===|

错误在这里找到:

ostream& operator <<(ostream& outs, circleType& circle1)
{
   outs << "radius: " << getRadius() << endl
   << "circumference: " << circumference() << endl
   << "area: " << area() << endl;
   return outs;
}

举个例子,这里是周长函数:

double circleType::circumference()
{
    return (radius*2*pi);
}

头文件:

class circleType
{
public:
    circleType(); // færibreytulaus smiður
    circleType(double the_radius);
    double getRadius();
    void setRadius(double the_radius);
    double area();
    double circumference();
    friend ostream& operator <<(ostream& outs, circleType& );
private:
    double radius;
};

Main:

circleType circle1(3.0);
cout << "circle1:" << endl;
cout << "--------" << endl;
cout << circle1 << endl;

所有页眉都包含在各处。我仍然有点困惑的过载功能,任何帮助通知。

您没有调用输入对象(circle1)上的成员函数;相反,您正试图调用一些不存在的具有相同名称的全局函数(请注意,friend函数不是它的朋友类的成员函数,而是一个已被授予访问类内部的自由非成员函数)。

要解决此问题,请更改过载operator <<的定义,如下所示:

ostream& operator << (ostream& outs, circleType& circle1)
{
   outs << "radius: " << circle1.getRadius() << endl
   << "circumference: " << circl1.circumference() << endl
   << "area: " << circle1.area() << endl;
   return outs;
}