저는 PIMPL을 구현하는 두 가지 클래스 인 State와 StateMachine을가집니다.pimpl 인수를 pimpl 객체에 전달하십시오.
그들은 Private :: State 및 Private :: StateMachine을 구현합니다.
Private :: StateMachine에는 "addState (Private :: State &)"메서드가 있습니다. 나는 머신 (StateMachine) 내에서 개인 :: 머신 (StateMachine)에 주에 여드름 투성이의 객체 개인 :: 상태를 전달할 수있는 방법
StateMachine machine;
State state;
machine.addState(state);
을하기 위해, 자사의 PIMPL 클래스에 addState() 메소드를 작성하려면?
StateMachine.h
#include <memory>
class State;
namespace Private {
class StateMachine;
} // namespace Private
class StateMachine
{
public:
StateMachine();
~StateMachine();
// want to add this
void addState(const State &state);
private:
std::unique_ptr<Private::StateMachine> m_stateMachine;
};
State.h는
#include <memory>
namespace Private {
class State;
} // namespace Private
namespace StateMachine {
class State
{
public:
State();
~State();
private:
std::unique_ptr<Private::State> m_state;
};
'StateMachine'과'State'는 복사 할 수 없습니다. pimpl로 클래스 구현을 숨기고 싶습니다. 이 경우 – Jepessen
에 addState()를 주었던 상태로 무엇을해야합니까? 'Private :: State' impl에서 무언가를 복사합니까? –
아니요. Private :: State의 일부 속성을 읽고 복사하거나 이동하지 않고 몇 가지 작업을 수행해야합니다. – Jepessen