对于作业,我必须创建一个类的一些私人成员类。必须创建一个友元函数,它需要两个参数:指向对象的指针和指向对象私有成员的指针。 代码定义如下:C++ Friend函数无法访问私有成员;错误2248
#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
class SomeClass {
friend int FriendFunction(bool SomeClass::*privMember, SomeClass *object);
private:
bool Member1;
bool Member2;
bool Member3;
public:
SomeClass() {
bool tmp;
if (rand() < 16384)
tmp = false;
else
tmp = true;
Member1 = tmp;
if (rand() < 16384)
tmp = false;
else
tmp = true;
Member2 = tmp;
if (rand() < 16384)
tmp = false;
else
tmp = true;
Member3 = tmp;
}
};
int FriendFunction(bool SomeClass::*privMember, SomeClass *object) {
if (!(object->*privMember))
object->*privMember = !(object->*privMember);
else
cout << "No changes made" << endl;
return 0;
}
int main()
{
srand(time(0));
SomeClass *object1 = new SomeClass();
FriendFunction(&SomeClass::Member1, object1);
FriendFunction(&SomeClass::Member2, object1);
FriendFunction(&SomeClass::Member3, object1);
return 0;
}
的友元函数调用不会编译和编译器报告C2248消息。 代码有什么问题? 我将不胜感激任何支持。
感谢
我敢打赌,编译器错误是在你实际访问私有成员的'main'函数中。 –
如果您有定义getter函数的自由(在您的任务中),那么您可以轻松访问指向您班级的私人成员的指针。然后你可以使用你的_FriendFunction_。 – sokin