Почему бы не передать объект базы данных и индекс чанка в качестве параметров конструктора методам доступа?
class IAccessor
{
protected:
IAccessor (IDatabase *database, int index) : m_database (database), m_index (index) {}
IDatabase *m_database;
int m_index;
};
class Accessor1 : public IAccessor
{
public:
Accessor1 (IDatabase *database, int index) : IAccessor (database, index) {}
};
и затем:
Accessor1 a1 (database, index);
some_value = a1.SomeFunction ();