Is the following code legal in C++. Accessing a friend class member public method? I know this sounds confusing, and the best way to show it is in code. I was wondering if the TestClassC::Method() is valid in the code below?
I've compiled (g++) and it works, however, I run into a situation, where it produces a segmentation fault on other machine/distros at TestClassC::Method(). Which is making me wonder if this->classA_Ptr->classB.Method(); is legal in C++.
#include <iostream>
using namespace std;
class TestClassB
{
public:
TestClassB(void){};
~TestClassB(void){};
void Method(void){
cout << "Hello Again" << endl;
}
};
class TestClassC; //Forward Declaration
class TestClassA
{
friend class TestClassC;
public:
TestClassA(void){};
~TestClassA(void){};
private:
TestClassB classB;
};
class TestClassC
{
public:
TestClassC(TestClassA* a_Ptr){
this->classA_Ptr = a_Ptr;
}
~TestClassC(void){};
void Method(void){
//Is this Valid/Legal ???
this->classA_Ptr->classB.Method();
}
private:
TestClassA* classA_Ptr;
};
int main()
{
cout << "Hello world!" << endl;
TestClassA testClassA;
TestClassC classC(&testClassA);
classC.Method();
return 0;
}