【发布时间】:2022-01-03 21:36:51
【问题描述】:
使用此代码:
#include <iostream>
using namespace std;
class point{
public:
double get_x();
void set_x(double v);
double get_y();
void set_y(double z);
private:
double x, y;
};
point operator+(point& p1, point& p2)
{
point sum = {p1.x};// + p2.x, p1.y + p2.y};
return sum;
}
int main()
{
point a = {3.5,2.5}, b = {2.5,4.5}, c;
}
我收到以下编译器错误,提示无法访问私有成员:
point.cpp(22): 错误 C2248: 'point::x': 无法访问在类 'point' 中声明的私有成员 point.cpp(17): 注意:见 'point::x' 的声明 point.cpp(8): 注意:见'point'的声明
我对 C++ 很陌生,似乎不知道如何解决这个问题。非常感谢任何帮助。
【问题讨论】:
-
operator+ 需要成为您的 point 类的好友才能访问私有。相关:https://stackoverflow.com/questions/60698211/c-operator-overloading-with-friend-keyword
-
感谢您的回答。我怎样才能让它成为我点课的朋友?
-
第二个引用的问题有确切的答案。
-
不要让
operator+成为朋友。point具有可以使用的访问器;没有必要成为朋友。