Смысл передавать в Solve наш куб, если Solve можно сделать методом класса Cube?
Потому что методом должен быть только минимальный, базисный функционал, посредством которого уже нужно реализовывать все остальные функции - это с "Эффективный С++". А здесь, действительно, не очень важно, поскольку таких внешних методов у тебя будет не много, ты же не пишешь всеобъемлющее решение всех видов кубов и граней, цветов и форм, т.е. это, скорее всего, у тебя не либа. Можешь добавить если у тебя один такой метод, для лаконичности.
ИМХО