如何从 pimpl 类调用调用者类的复制构造函数?

发布于 2025-01-07 21:38:27 字数 223 浏览 1 评论 0原文

我只需要知道如果我想从 pImpl 类调用我的复制构造函数,我该怎么做? 例如:

CImpl::SomeFunc()
{

//cloning the caller class instance

caller = new Caller(*this)// I cant do this since its a pImpl class

}

我怎样才能实现这个目标?

I just need to know if I want to call my copyconstuctor from pImpl class, how will I do it?
For example:

CImpl::SomeFunc()
{

//cloning the caller class instance

caller = new Caller(*this)// I cant do this since its a pImpl class

}

How can i achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷子口的你 2025-01-14 21:38:27

阅读您的评论后,您似乎希望能够提供复制 Caller 类的副本。如果是这样,那么在这种情况下,您应该为 Caller 类实现复制构造函数,您可以在其中制作 m_pImpl 指针的硬拷贝。

class CallerImpl;

class Caller
{
   std::shared_ptr<CallerImpl> m_pImpl;
public:
   Caller(Caller const & other) : m_pImpl(other.m_pImpl->Clone()) {}
   //...
};

然后您可以在 CallerImpl 类中实现 Clone() 函数,如下所示:

class CallerImpl
{
   public:
     CallerImpl* Clone() const
     {
         return new CallerImpl(*this); //create a copy and return it
     }
     //...
};

现在您可以复制 Caller:

//Usage
Caller original;
Caller copy(original); 

Well after reading your comments, it seems that you want to be able to provide the ability to make copies of Caller class. If so, then in that case you should implement the copy constructor for Caller class, where you can make a hard copy of m_pImpl pointer.

class CallerImpl;

class Caller
{
   std::shared_ptr<CallerImpl> m_pImpl;
public:
   Caller(Caller const & other) : m_pImpl(other.m_pImpl->Clone()) {}
   //...
};

And then you can implement Clone() function in CallerImpl class as:

class CallerImpl
{
   public:
     CallerImpl* Clone() const
     {
         return new CallerImpl(*this); //create a copy and return it
     }
     //...
};

Now you can make copy of Caller:

//Usage
Caller original;
Caller copy(original); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文