#include <vector>
#include <string>
#include <algorithm>

class BlockRepresentation
{
    private:
    class Block
    {
    public:
       int id;
       int fpDimensions;
       int *position; 
       int *blockDimensions; 
       
       Block() : position(nullptr), blockDimensions(nullptr),
                 id(0), fpDimensions(0) {}
       ~Block() 
       {
          delete [] position;
          delete [] blockDimensions;
       }

       Block(const Block& rhs) : id(rhs.id), fpDimensions(rhs.fpDimensions),
                               position(new int[rhs.fpDimensions]),
                               blockDimensions(new int[rhs.fpDimensions])
       {
          std::copy(rhs.position, rhs.position + fpDimensions, position);   
          std::copy(rhs.blockDimensions, rhs.blockDimensions + fpDimensions, 
                    blockDimensions);   
       }

       Block& operator=(const Block& rhs)
       {
          Block temp(rhs);
          std::swap(temp.position, position);
          std::swap(temp.blockDimensions, blockDimensions);
          std::swap(temp.id, id);
          std::swap(temp.fpDimensions, fpDimensions);
          return *this;
       }
    };
        std::vector<Block> all_blocks;
    public:
        BlockRepresentation() {}
        void AddBlock( int id, int fpDimensions, int position[], int dimensions[] );
        std::string ToGPL();
};

void BlockRepresentation::AddBlock( int id, int fpDimensions, int position[], int dimensions[] )
{
    Block newBlock;
    newBlock.id = id;
    newBlock.fpDimensions = fpDimensions;
    newBlock.position = new int[fpDimensions];        // pointers in question
    newBlock.blockDimensions = new int[fpDimensions]; // pointers in question

    for (int i = 0; i < fpDimensions; ++i)
    {
        newBlock.position[i] = position[i];
        newBlock.blockDimensions[i] = dimensions[i];
    }
    all_blocks.push_back( newBlock );
}

int main()
{
	int x[]  = {1,2,3,4,5};
	int y[] = {2,4,6,8,10};
	BlockRepresentation br;
	br.AddBlock(1,5,x,y);
	br.AddBlock(2,5,y,x);
}