gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:59:50 25 4
gpt4 key购买 nike

我只需要知道我是否想从 pImpl 类调用我的 copyconstuctor,我该怎么做?例如:

CImpl::SomeFunc()
{

//cloning the caller class instance

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

}

我怎样才能做到这一点?

最佳答案

在阅读了您的评论后,您似乎希望能够提供复制 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);

关于c++ - 如何从 pimpl 类调用调用者类的复制构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com