A simple 3D Wrapper class around std::vector
Quick comments:


unsigned long => size_t everywhere ... it's the same, but that's the alias for this job
check for _xDim, _yDim, _xDim &lt; 0 ... underflow is also undefined behvaiour ;-)
implement operator[] for those who are confident about their bounds, or for faster release builds. It's not trivial for multiple dims, check here. 
free data is flawed. You need to look into unique_pointer or shared pointer which will do this stuff for you. 
Resize? It is actually required? Can you not auto-resize during at()? unless you want that as a code check during development. 
Consider a library