对于家庭作业,我必须创建一个包含一些 bool 类型的私有(private)成员的类。必须创建一个友元函数,它有两个参数:指向对象的指针和指向对象私有(private)成员的指针。 代码定义如下:
#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 消息。 代码有什么问题? 如果有任何支持,我将不胜感激。
谢谢
最佳答案
那是因为你试图从 main
访问私有(private)成员:
FriendFunction(&SomeClass::Member1, object1);
这一行引用了 main
中的私有(private)字段 &SomeClass::Member1
,当然失败了。
关于C++ Friend 函数不能访问私有(private)成员;错误 2248,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32624373/