我在程序中使用了pimpl习惯用法,并且被卡在一个地方。我的代码是

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


在我的ClassImpl-> GetP()中

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


如您所见,我需要将pImpl bact转换为我的呼叫者类型。
怎么了

我不想使用任何演员表
请指教

最佳答案

你不是简单地做

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


因为Class::GetP()的调用者无论如何都不应该有指向内部的指针? (但是,那是什么方法呢?它没有给调用者任何他们没有的东西。)

10-06 14:41