- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
当试图在我的shape.cpp
中重载operator<<
时,它似乎无法识别类中的变量,即使它是类的friend
。
我的.cpp
文件:
#include "Shape.h"
ostream& operator << (ostream& cout, const Shape& shapes)
{
for (int i = 0; i < points.size(); i++) //points is undefined
{
cout << points[i] << endl;
}
}
我的.h
文件:
#include <vector>
#include "Point.h"
#pragma once
using namespace std;
class Shape
{
friend ostream& operator << (ostream& cout, const Shape& shapes);
private:
vector <Point> points; //Ordered list of vertices
};
我已经为我的point
类使用了相同的重载,它工作得很好。
1条答案
按热度按时间jhdbpxl91#
friend
函数不是类成员。它可以被视为任何其他非类函数。但由于它是friend
,因此它可以访问其私有成员:现在应该很清楚了,对象是作为
shapes
参数传入的,它是points
成员,因此,必须是shapes.points
。然而,我们可以做得更好,使用范围迭代怎么样?