Написание кода на Brew, когда в нем используются локальные интерфейсы, может быть повторяющимся и подверженным ошибкам, чтобы сделать его устойчивым, например:
Foo()
{
ISomeInterface* interface = NULL;
int err = ISHELL_Createnstance(…,...,&interface);
err = somethingThatCanFail();
if (AEE_SUCCESS != err)
ISomeInterface_Release(interface);
err = somethingElseThatCanFail()
if (AEE_SUCCESS != err)
ISomeInterface_Release(interface);
etc....
Было бы быстро написать класс RAII для автоматического освобожденияинтерфейс при выходе из функции, но он будет специфичным для конкретного интерфейса (он, конечно, вызовет ISomeInterface_Release в своем деструкторе)
Есть ли способ создания универсального класса RAII, который можно использовать для интерфейсовРазличные типы?т. е. есть ли общая функция Release, которую можно вызывать в RAII вместо конкретной версии интерфейса, или какой-то другой механизм?
--- Edit ---- Извинения, я изначально добавил теги C ++ и RAIIна эту запись, которую я сейчас удалил.В качестве ответа требуется знание Brew, а не знание C ++.Спасибо людям, которые нашли время, чтобы ответить, я должен был добавить больше информации для начала и не добавлять эти дополнительные теги.