Обратите внимание, что я на 95% незнаком с указателями.
Итак, вот моя дилемма, у меня есть структура, давайте назовем это foo
struct foo{
int a;
}
так что давайте создадим экземпляр Foo
foo test;
Теперь я хочу назначить пустой указатель, чтобы указать на это
void *ptest;
ptest = &test;
Все это прекрасно работает, но когда дело доходит до изменения содержимого (например, внутри a foo), я не уверен, как к этому подойти. Я старался static_cast
как это:
static_cast<foo*>(ptest).a=0;
но это тоже не сработало. Любая помощь будет оценена. Спасибо
Вы приводите его к указателю, поэтому вам нужно разыменовать его, используя *
оператор или использовать ->
оператор.
Вариант А:
*(static_cast<foo*>(ptest)).a=0
Вариант Б:
static_cast<foo*>(ptest)->a=0
Вы просто должны заменить. с ->
Вы используете оператор точки, когда имеете дело с объектом напрямую или ссылкой на него, и оператор ->, когда имеете дело с ним через указатель.