То, что вы пытаетесь сделать, ошибочно.
Типичный вариант использования (неконстантного) указателя на указатель в качестве аргумента функции - это то, что функция будет изменять аргумент для указания указателя на некоторый экземпляр.
Это функция, которая выбирает экземпляр.
Пример фабричного метода.
Тип аргумента описывает тип, который функция гарантирует быть действительной.
Если ваша функция гарантировала, что экземпляр был cBar, тогда она должна принимать аргумент cBar **.
Поскольку он принимает cFoo **, он только гарантирует, что объект является действительным cFoo.
В текущей форме, если вы вызовете приведение, вы заставите любой тип cFoo быть представленным как cBar - даже если это не так.