友元函数是一种在类外部定义的函数,可以访问类的私有成员。如果友元函数不起作用,可能是以下几个原因:
class MyClass {
private:
int privateData;
public:
friend void friendFunction(MyClass obj); // 在类内声明友元函数
};
void friendFunction(MyClass obj) {
obj.privateData = 10; // 在类外使用私有成员
}
class MyClass {
private:
int privateData;
public:
friend void friendFunction(MyClass obj); // 声明友元函数
void setPrivateData(int data) {
privateData = data;
}
};
void friendFunction(MyClass obj) {
int data = obj.privateData; // 访问私有成员
std::cout << data << std::endl;
}
int main() {
MyClass obj;
obj.setPrivateData(10);
friendFunction(obj); // 传递类的对象给友元函数
return 0;
}
class MyClass {
private:
int privateData;
public:
friend void friendFunction(MyClass obj); // 声明友元函数
void setPrivateData(int data) {
privateData = data;
}
};
void friendFunction(MyClass obj) {
int data = obj.privateData; // 错误!无法访问私有成员
std::cout << data << std::endl;
}
请根据具体情况检查以上几个原因,确保友元函数的声明和定义正确,并传递正确的参数。