Now have a working Fourier transform. The underlying issue was that method void cell::_sumCharge(int k) uses int k as the index of the k point being used. However, later in the method, a loop over k was used, trying to access _wk[k] -- the weight of each k point, and therefore requesting values that aren't in _wk[k]. Had I turned on compiler warning flags, I would have caught it much earlier.