Изменение содержимого структуры с помощью пустого указателя

Обратите внимание, что я на 95% незнаком с указателями.

Итак, вот моя дилемма, у меня есть структура, давайте назовем это foo

struct foo{
int a;
}

так что давайте создадим экземпляр Foo

foo test;

Теперь я хочу назначить пустой указатель, чтобы указать на это

 void *ptest;
ptest = &test;

Все это прекрасно работает, но когда дело доходит до изменения содержимого (например, внутри a foo), я не уверен, как к этому подойти. Я старался static_cast как это:

static_cast<foo*>(ptest).a=0;

но это тоже не сработало. Любая помощь будет оценена. Спасибо

2

Решение

Вы приводите его к указателю, поэтому вам нужно разыменовать его, используя * оператор или использовать -> оператор.

Вариант А:

*(static_cast<foo*>(ptest)).a=0

Вариант Б:

static_cast<foo*>(ptest)->a=0
2

Другие решения

Вы просто должны заменить. с ->

Вы используете оператор точки, когда имеете дело с объектом напрямую или ссылкой на него, и оператор ->, когда имеете дело с ним через указатель.

2

По вопросам рекламы [email protected]