class TPunkt3D
{
    public:
        TPunkt3D(): iX(0), iY(0), iZ(0) {}
        TPunkt3D( TInt aX, TInt aY, TInt aZ ): iX(aX), iY(aY), iZ(aZ) {};
        
    public:
        TInt X() const { return iX; }
        TInt Y() const { return iY; }
        TInt Z() const { return iZ; }
        
        void UstawX( TInt aX ) { iX = aX; }
        void UstawY( TInt aY ) { iY = aY; }
        void UstawZ( TInt aZ ) { iZ = aZ; }
        
    private:
        TInt iX;
        TInt iY;
        TInt iZ;
};

//...

TPunkt3D punkt;

// Deskryptoryzujemy obiekt "punkt".
TPckgBuf< TPunkt3D > pckgBuf( punkt );
TPckgC< TPunkt3D > pckgc( punkt );
TPckg< TPunkt3D > pckg( punkt );

// Moemy uzyska dostp do upakowanego obiektu
// za pomoc operatora ().
// Prba zmiany wsprzdnych punktu:
pckgBuf().UstawX( 1 );    // Dziaamy na kopii obiektu "punkt". 
// p1.iX = 1, punkt.iX = 0
//pckgc().UstawX( 2 );    // Nie skompiluje si - metoda UstawX() nie jest typu const.
pckg().UstawX( 3 );    // Dziaamy na referencji do obiektu "punkt".
// p1.iX = 3, punkt.iX = 3
