KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Suppose I have three C++ classes FooA, FooB and FooC. FooA has an member function named Hello , I want to call this function in class FooB, but I don't want class FooC be able to call it. The best way I can figure out to realize this is to declare FooB as a friend class of FooA. But as long as I do this, all FooA's private and protected members will be exposed which is quite unacceptable to me. So, I wanna know if there is any mechanism in C++(03 or 11) better than friend class which can solve this dilemma. And I assume it will be nice if the following syntax is possible: class FooA { private friend class FooB: void Hello(); void Hello2(); private: void Hello3(); int m_iData; }; class FooB { void fun() { FooA objA; objA.Hello() // right objA.Hello2() // right objA.Hello3() // compile error ojbA.m_iData = 0; // compile error } }; class FooC { void fun() { FooA objA; objA.Hello() // compile error objA.Hello2() // compile error objA.Hello3() // compile error ojbA.m_iData = 0; // compile error } };
Tags (comma-separated)
Save Edits
Cancel