class B
{
private:
int b;
};
class D1 : public B
{
public:
D1():d1(10){}
int d1;
};
class D2 : public B
{
public:
int D1::* p;
};
int main()
{
D2 a;
D1 b;
a.p = &D1::d1;
std::cout<< b.*(a.p);
std::getchar();
}
If that's not an option you'll need to use a getter:
class B
{
private:
int b;
};
class D1 : public B
{
public:
D1():d1(10){}
int get(){return d1;}
private:
int d1;
};
class D2 : public B
{
public:
int (D1::*p)();
};
int main()
{
D2 a;
D1 b;
a.p = &D1::get;
std::cout<< (b.*(a.p))();
std::getchar();
}