我只需要知道如果我想從pImpl類調用我的copyconstuctor,我該如何做? 例如:如何從pimpl類調用一個調用者類的拷貝構造函數?
CImpl::SomeFunc()
{
//cloning the caller class instance
caller = new Caller(*this)// I cant do this since its a pImpl class
}
我該如何做到這一點?
我只需要知道如果我想從pImpl類調用我的copyconstuctor,我該如何做? 例如:如何從pimpl類調用一個調用者類的拷貝構造函數?
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()) {}
//...
};
然後你就可以實現Clone()
功能CallerImpl
類爲:
class CallerImpl
{
public:
CallerImpl* Clone() const
{
return new CallerImpl(*this); //create a copy and return it
}
//...
};
現在你可以使Caller
副本:
//Usage
Caller original;
Caller copy(original);
這是很難回答的問題是沒有正確地問。投票結束。 – Nawaz 2012-02-20 03:09:49
我的意思是我有一個情況,我需要調用我的調用者類的copyconstructor在其相應的pImpl類中。 我該怎麼做? – Yogi 2012-02-20 03:11:37
如果你需要這樣做,你的設計是錯誤的開始。 – Nawaz 2012-02-20 03:13:00