c++ - 将 pImpl 指针转换回调用者类型

标签 c++ pimpl-idiom

我在我的程序中使用了 pimpl idiom,但我被困在一个地方。我的代码是

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

在我的 ClassImpl->GetP() 中我有

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

如您所见,我需要将我的 pImpl bact 转换为我的调用者类型。 路在何方?

我不想使用任何转换
请指教

最佳答案

你不会简单地做

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

因为 Class::GetP() 的调用者不应该有指向内部的指针吗? (但是,那个方法是干什么用的?它不会给调用者任何他们还没有的东西。)

关于c++ - 将 pImpl 指针转换回调用者类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306226/

相关文章:

c++ - 容器类的成员不能是基类

c++ - 我可以在不修改 QWidget 子类 PIMPL 样式的情况下包装它吗

c++ - 如何使用 Qt 的 PIMPL 成语?

c++ - Pimpl 带有包含类的 header

c++ - 为什么在 C++ 中,类的大小必须始终为用户所知?

c++ - 满意和建模的概念?

c++ - auto_ptr.release() 中的段错误

c++ - vector 的返回 vector

c++ - 用于实现一副纸牌的链表与动态数组? C++

c++ - 如何正确包装第 3 方库结构?