# include <Vblock.h>template <class T> class Vblock{ public: // similar to Block(3C++) };
A Vblock is just like a Block (see Block(3C++)), except that (for technical reasons having to do with G2++) some of its member functions are virtual. If a G2++ record definition (see G2++.4C++) specifies an array, the corresponding declaration generated by g2++comp(1C++) in the .h file will contain a Vblock (see the Example).
When compiled by g2++comp(1C++), the following record definition
usr.g usr name * proj *(100) LONG
generates a .h file containing the following:
usr.h ... typedef struct USR{ String name; Vblock<LONG> proj; USR(); }USR;
A client program may manipulate the proj field just as though it were a Block, e.g.,
#include "usr.h" main(){ USR u; for(int i=0;i<100;i++){ u.proj.reserve(i); u.proj[i] = i; } }