Стандартный способ найти базовый адрес структуры от члена
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
}
у меня естьData
экземпляр, выделенный в куче, и указатель на егоstd::string b;
член. Как мне получить базовый адресData
Например, является ли строка строкой стандартным образом с учетом смещений и отступов?
Я пытался вычестьsizeof(int)
а такжеstd::offsetof(Data, std::string)
отstd::string*
указатель, но я не мог заставить его работать.