EXT C++ Library - accessor

The ext::accessor is a templated wrapper that is used when one needs a lightweight mapping of reading a member variable to a non-static member function call.


Details:

The ext::accessor provides a syntactic conversion of calling a member function into accessing a member variable. Whether every access to the variable is interpreted as a call to the function or the value is cached controls the Policy parameter.

For full mapping (with write access) see ext::vartor template.

Interface:

template <typename T, typename C, T (C::* F) () const,
          ext::policy::type Policy = ext::policy::none>
class ext::accessor {
    public:
        explicit accessor (const C *);
        operator T () const;

        void invalidate (); // only when instantiated with ext::policy::cached
};

Examples:

#include <ext/c++>
#include <windows.h>

class C {
    private:
        int get_info () { /* ... */ };

    public:
        const ext::accessor <int, C, &C::get_info> info;

    public:
        C () : info (this) {};
};

int main () {
    C c;
    // ...
    int i = c.info; // calls C::get_info
    // ...
};

Remarks

The ext::accessor members can provide simple to use interface to variables whose value can be obtained only by calling a function (like API functions).


[index]