Как можно получить доступ к элементам структуры?
Есть указатель на void * ( указывает на определенную структуру ). Пример:
struct object
{
int a;
std::string b;
};
у меня есть указатель -
object o;
void *p = &o;
можно узнать смещение в памяти по указателю:
int offset1 = offsetof(struct object, a);
int offset2 = offsetof(struct object, b);
например int я могу установить:
*((int *) (p + offset1)) = 5;
вопрос как установить std::string? если я привожу к указателю - получаю кашу. Вариант использовать в структуре указатель на std::string не подходит. Есть варианты?
---
Хотя проверил так работает:
#include <iostream>
#include <string>
struct object
{
int a;
std::string b;
};
int main(int argc, const char * argv[]) {
object o;
char *p = (char *) &o;
o.a = 1;
o.b = "demo";
int offset1 = offsetof(struct object, a);
int offset2 = offsetof(struct object, b);
*((int *) (p + offset1)) = 5;
*((std::string *) (p + offset2)) = std::string("demoooo");
return 0;
}
я использовал wxString (wxwidgets) - видимо там свои проблемы.