Click here to Skip to main content
15,890,557 members
Home / Discussions / ATL / WTL / STL
   

ATL / WTL / STL

 
Questionusing friend Pin
bkelly139-Dec-14 7:29
bkelly139-Dec-14 7:29 
AnswerRe: using friend Pin
Richard MacCutchan10-Dec-14 5:22
mveRichard MacCutchan10-Dec-14 5:22 
GeneralRe: using friend Pin
bkelly1311-Dec-14 10:24
bkelly1311-Dec-14 10:24 
GeneralRe: using friend Pin
Richard MacCutchan11-Dec-14 23:07
mveRichard MacCutchan11-Dec-14 23:07 
GeneralRe: using friend Pin
Aescleal11-Dec-14 23:52
Aescleal11-Dec-14 23:52 
GeneralRe: using friend Pin
bkelly1312-Dec-14 12:12
bkelly1312-Dec-14 12:12 
GeneralRe: using friend Pin
Aescleal15-Dec-14 5:18
Aescleal15-Dec-14 5:18 
AnswerRe: using friend Pin
Theo Buys22-Dec-14 4:25
Theo Buys22-Dec-14 4:25 
friend can be used to give another class access to the protected and private members of the class that specified friend.

If C_Messages want to access the protected and private members of the class C_Configuration then C_Configuration specified C_Messages as friend.

If you aggregate the class C_Messages so that is has a C_Configuration, you can only access the public members of C_Configuration in C_Messages. But with the friend specifier you can also access the protected and private members.

Sample code:

C++
class C2;
class C1
{
public:
	int public_var;
protected:
	int protected_var;
private:
	int private_var;
friend class C2;
};

class C2
{
public:
	class C1 member;
	void set_private_var (int v) { member.private_var = v; } 
	void set_protected_var (int v) { member.protected_var = v; } 
};

void Test()
{
	C2 obj;
	
	obj.member.public_var = 100; // ok

	// ERROR: can't access protected and private member
	// obj.member.protected_var = 100; 
	// obj.member.private_var = 200; 

	obj.set_protected_var(100); // ok
	obj.set_private_var(200);   // ok
}


Another solution is working with an intermediate class which specifies the friend. In this case you get only access to public and protected members of the base class.

Sample code:

C++
class C1
{
public:
	int public_var;
protected:
	int protected_var;
private:
	int private_var;
};

class C1B : public C1
{
friend C2;
}

class C2
{
public:
	class C1B member;        
	void set_protected_var (int v) { member.protected_var = v; } 
};

void Test()
{
	C2 obj;
	
	obj.member.public_var = 100; // ok

	// ERROR: can't access protected and private member
	// obj.member.protected_var = 100; 
	// obj.member.private_var = 200; 

	obj.set_protected_var(100); // ok	
}


modified 5-Jan-15 6:07am.

QuestionHow to create a dll as Unbreakable in C#.Net? Pin
karthickbm7-Dec-14 20:37
karthickbm7-Dec-14 20:37 
AnswerRe: How to create a dll as Unbreakable in C#.Net? Pin
Richard MacCutchan7-Dec-14 22:52
mveRichard MacCutchan7-Dec-14 22:52 
QuestionTCP/API class basic design Pin
bkelly138-Nov-14 16:31
bkelly138-Nov-14 16:31 
AnswerRe: TCP/API class basic design Pin
Garth J Lancaster8-Nov-14 16:56
professionalGarth J Lancaster8-Nov-14 16:56 
GeneralRe: TCP/API class basic design Pin
bkelly139-Nov-14 2:15
bkelly139-Nov-14 2:15 
AnswerRe: TCP/API class basic design Pin
Garth J Lancaster8-Nov-14 17:06
professionalGarth J Lancaster8-Nov-14 17:06 
GeneralRe: TCP/API class basic design Pin
bkelly139-Nov-14 2:19
bkelly139-Nov-14 2:19 
AnswerRe: TCP/API class basic design Pin
Albert Holguin10-Nov-14 4:58
professionalAlbert Holguin10-Nov-14 4:58 
GeneralRe: TCP/API class basic design Pin
bkelly1310-Nov-14 12:40
bkelly1310-Nov-14 12:40 
AnswerRe: TCP/API class basic design Pin
Albert Holguin10-Nov-14 16:47
professionalAlbert Holguin10-Nov-14 16:47 
GeneralMultiple threads explained Pin
bkelly1311-Nov-14 6:30
bkelly1311-Nov-14 6:30 
GeneralRe: Multiple threads explained Pin
Albert Holguin11-Nov-14 7:01
professionalAlbert Holguin11-Nov-14 7:01 
GeneralRe: Multiple threads explained Pin
bkelly1311-Nov-14 9:58
bkelly1311-Nov-14 9:58 
AnswerRe: TCP/API class basic design Pin
pasztorpisti10-Jan-15 11:06
pasztorpisti10-Jan-15 11:06 
QuestionTime of reading text file Pin
econy7-Nov-14 4:24
econy7-Nov-14 4:24 
QuestionRe: Time of reading text file Pin
Richard MacCutchan8-Nov-14 21:33
mveRichard MacCutchan8-Nov-14 21:33 
AnswerRe: Time of reading text file Pin
econy11-Nov-14 2:06
econy11-Nov-14 2:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.