對於作業,我必須創建一個類的一些私人成員類。必須創建一個友元函數,它需要兩個參數:指向對象的指針和指向對象私有成員的指針。 代碼定義如下: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