#include <memory>

struct IController
{
	virtual void doS() = 0;
};

struct IAnotherController
	: public IController
{
	virtual void notDo() = 0;
};

class Controller : public IAnotherController
{
	public:
	void doS() {};
	void notDo() {};
};

std::shared_ptr< IAnotherController >
create()
{
	return std::make_shared< Controller >();
}


int main() {
    std::shared_ptr< IController > ttt;
    ttt = create();
}
