¿Cómo desecha la constante cuando la función toma una referencia al objeto (y accede a métodos que no son constantes)?

Tengo una copia de seguridad de los datos que me gustaría proteger, así que lo hiceconst. Necesito violar esaconstness en dos ocasiones, una vez para almacenar datos vírgenes:

fgBlocks.CopyInto((BlkArray&)backUpCopy);

w.r.t.

result CopyInto(BlkArray &replica) const {/**/}

y de nuevo cuando llamo aRemoveAll() en él, que es un método no constante:

((BlkArray)backUpCopy).RemoveAll(true);

Es el primer elenco (mostrado arriba,(BlkArray&)) correcto? Es el único aspecto de la indirección al que no he lanzado antes. Por otra parte, agregaré otro aspecto no utilizado, el de desecharconstness para llamar a los métodos de un objeto, que el compilador no acepta como se muestra arriba.

Los miembros se declaran así:

BlkArray fgBlocks;
const BlkArray backUpCopy;

Estoy tratando de extender la solución de Correa, así que:

    BlkArray *pBUCopy = (BlkArray *)&backUpCopy;
    fgBlocks.CopyInto(*pBUCopy);

l único problema de @ ahora es que el compilador falla debido a

uninitialized member 'MyClass :: backUpCopy' con 'const' tipo 'const BlockArray'