Я бы хотел обернуть C типов в класс CPP для лучшей обработки памяти. Например, приведенный ниже фрагмент кода примерно показывает, что я хотел бы сделать:
class TJCompressor
{
public:
TJCompressor()
: m_tjInstance(tjInitCompress())
{
if (m_tjInstance == nullptr)
throw std::runtime_error("Could not create a TJ compressor instance");
}
~TJInstance()
{
tjDestroy(m_tjInstance);
}
const tjhandle& operator()() const
{
return m_tjInstance;
}
private:
tjhandle m_tjInstance = nullptr;
};
Однако теперь мне нужно получить доступ к фактическому tjhandle через operator()()
, и я бы предпочел избавиться от этого.
TJCompressor compressor;
tjDecompressHeader3(decompressor(), ... ); // works as expected
tjDecompressHeader3(decompressor, ... ); // preferred way of doing it
Я почти уверен, что это достижимо, но я почему-то не могу найти ничего о том, как это сделать.