class A
{
protected:
class B
{};

public:
void callB(B* b)
{
}
B* getB()
{
return 0;
}
};

int main()
{
A a;
//A::B* b; //NOT OK
a.callB(a.getB()); //OK
a.callB(0); //OK
}