Ну после прочтения ваших комментариев кажется, что вы хотите, чтобы у вас была возможность сделать копий из 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
Я имею в виду, что у меня есть ситуация, когда мне нужно вызвать copyconstructor моего класса вызывающего абонента в соответствующем классе pImpl. Как мне это сделать? – Yogi
Если вам нужно это сделать, ваш дизайн будет неправильным для начала. – Nawaz