Привет.
Ситуация такая: есть некоторый системный ресурс, типа хендл (RPC_BINDING_HANDLE, если кого-то интерисует) хочется вокруг него сделать обёртку. Особенность — вокрут этого хендла можно накрутить довольно сложные операции (искать/биндиться к серверу можно по-разному)
Вижу два варианта:
— маленький объект с перегруженными опреаторами приведения типа, полезные действия выполняет только в деструкторе и, возможно, при копировании. Операции реализованы как функции (по желанию — статические методы). Примерноь так (кстати, язык — C++):
class CRpcBindingHandleSimpleWrapper
{
public:
...
handle_t* operator& () {return &m_h;}
...
private:
handle_t m_h;
};
RPC_STATUS veryComplexBind(...., handle_t* ph);
— объект, для которого все эти операции — методы
class CRpcBindingHandleWrapper
{
public:
...
RPC_STATUS veryComplexBind(....,);
...
private:
handle_t m_h;
};
Плюсы первого подхода:
— такой объект можно использовать и со стандартными функциями.
— с моими функциями можно будет использовать стандартные хендлы.
Минусы:
— менее естественно выглядит
Пока сделал второй. Какие есть мнения?