class IInterface {

public:

  virutal void doSomething1() = 0;

  virtual void doSomething2() = 0;
};


class A : public IInterface {

public:

  void doSomething1() override;

  void doSomething2() override;

};


class B : public IInterface {

public:
  void doSomething1() override;

  void doSomething2() override;

};


이렇게 있는데, 지 혼자 쓰는 동작을 가진 애가 있어,


class C : public IInterface {
public:

  void doSomething1() override;

  void doSomething2() override;

  void doSpecialThing();
};


사용하는 쪽에서는 IInterface를 가지고 사용한단 말야,


IInterface* pObject = new A();

pObject->doSomething1();


근데 C의 doSpecialThing()을 사용하려면 IInterface에 그 함수가 있어야지 사용하는 쪽에서 쓸 수 있을거 아냐

그래서

class IInterface {

public:
  virtual void doSomething1() = 0;

  virtual void doSomething2() = 0;

  virtual void doSpecialThing() {}
};


이런 식으로 바꾸고 class C만 저걸 구현해서 쓰고 있는데,

A, B는 가지지 않은 동작인데 A,B,C의 interface에 저게 들어가 있는게 아닌거 같고,

그렇다고 저 동작을 분리해서 따로 인터페이스를 만들자니 저런 동작이 너무 많기도 하고, 생성은 또 어떻게 하나 싶기도 하고.



이런거 해결하는 깔끔한 방법 있음??

아니면 구글 키워드라도