Question

I am using pimpl idiom in my program and I am stuck in one place. My code is

Class*
Class::GetP()
{
return ClassImpl->GetP();
}

In my ClassImpl->GetP() I have

ClassImpl*
ClassImpl::GetP()
{
return pClassImpl;
}

As you can see I need to convert my pImpl bact to my caller type. What is the way?

I dont want to use any casting
Please advice

Was it helpful?

Solution

Wouldn't you simply do

Class *
Class::GetP()
{
    return this;
}

since callers of Class::GetP() shouldn't have a pointer to the internals anyway? (But then, what is that method for? It doesn't give the caller anything that they don't already have.)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top