Maneira padrão de encontrar o endereço base do struct de um membro
struct Data {
int a;
std::string b;
float c;
};
std::string* allocateDataAndGetString() {
Data* dataPtr(someAllocator.allocate<Data>());
return &dataPtr.b;
}
Data* getBaseDataPtrFromString(std::string* mStringMember) {
// ???
}
int main() {
std::string* stringPtr(allocateDataAndGetString());
Data* dataPtr(getBaseDataPtrFromString
}
eu tenho umData
instância alocada no heap e um ponteiro para suastd::string b;
membro. Como obtenho o endereço base doData
Por exemplo, se a string é membro, levando em consideração compensações e preenchimentos, de maneira padrão?
Eu tentei subtrairsizeof(int)
estd::offsetof(Data, std::string)
destd::string*
ponteiro, mas não consegui fazê-lo funcionar.