Преобразование указателя pImpl обратно в тип вызывающего - PullRequest
1 голос
/ 16 февраля 2012

Я использую идиому pimpl в своей программе, и я застрял в одном месте. Мой код

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

В моем ClassImpl-> GetP () у меня есть

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

Как видите, мне нужно преобразовать свой pImpl bact в тип вызывающего абонента. Какой путь?

Я не хочу использовать кастинг
Пожалуйста, совет

1 Ответ

0 голосов
/ 16 февраля 2012

Не могли бы вы просто сделать

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

, поскольку у вызывающих Class::GetP() в любом случае не должно быть указателя на внутренние компоненты?(Но тогда, для чего этот метод? Он не дает вызывающей стороне ничего, чего у него еще нет.)

...