Nested C++ classes with deep copy in OpenACC

I had a problem with nested classes in C++ and openacc, it is the same problem as described here: https://stackoverflow.com/questions/43351111/openacc-vs-c-fatal-error-variable-is-partially-present-on-the-device

the proposed solutions work fine, however I was wondering if there is a way to solve this with deep copy, i.e. without exposing the member data of Data and without using pointers to Data?

I tried the following:

in the class Data

#pragma acc policy<dpmove> copy(arr[0:DATASIZE])

and in DataKeeper

Data a, b, c;
....
#pragma acc data copy(a<dpmove>,b<dpmove>,c<dpmove>)

I get the same error as before, but I was wondering if there isn’t a way using deep copy that works for this example.