Do you mean change ```SGVector<float64_t>* multilabel``` into ```SGVector<SGVector<float64_t>> multilabel```? This can be done.
Then what about other pointers, e.g., ```SGSparseVector<sg_type>*& mat_feat```? The thing is that the base class ```CFile``` defined all these types, e.g.,
```
virtual void set_sparse_matrix(
			const SGSparseVector<float64_t>* matrix, int32_t num_feat, int32_t num_vec)=0;
```