//A.cpp
template<typename Functor>
void ForEachPart(Functor functor)
{
for (unsigned int z = 0, zSize = Parts.getHeight(); z < zSize; ++z)
{
for (unsigned int y = 0, ySize = Parts.getWidth(); y < ySize; ++y)
{
for (unsigned int x = 0, xSize = Parts.getLength(); x < xSize; ++x)
{
functor(Parts[x][y][z].ptr);
}
}
}
}
A* Parts;
Parts->ForEachPart([](B* part)
{
part->Destroy();
});