对于家庭作业,我必须创建一个包含bool类型的私有成员的类。必须创建一个将使用两个参数的友元函数:指向对象的指针和指向对象的私有成员的指针。 代码定义如下:
#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;
}
FriendFunction调用不编译,编译器报告C2248消息。 代码有什么问题? 我很感激任何支持。
由于
答案 0 :(得分:1)
那是因为您尝试从main
访问私人成员:
FriendFunction(&SomeClass::Member1, object1);
这一行引用&SomeClass::Member1
的私人字段main
,当然也失败了。