С C++ и C мы можем передавать разные функции другой функции с помощью указателя на void construct. Я хотел бы сделать то же самое, переходя к структур функции, как этот простой пример:Как передать указатели на разные структуры для функции?
#include <iostream>
using namespace std;
struct S1 {
static constexpr int n=1;
static constexpr double v=1.2;
};
struct S2 {
static constexpr int n=2;
static constexpr double v=3.4;
};
typedef void *Vp; // this would be (*Vp)() for functions
void func(Vp p) {
cout << "n=" << p->n << " v=" <<'\n'
// (fails here with error: 'Vp {aka void*}' is not
// a pointer-to-object type)
}
int main() {
struct S1 s1;
struct S2 s2;
cout <<"main: using first data\n";
func(&s1);
cout <<"main: using second data\n";
func(&s2);
return 0;
}
Кто-нибудь знает, как сделать эту работу или, если это вообще возможно?
Аналогичный вопрос был задан раньше, но ответы мне не помогли: passing different structs to a function(using void *)
Я знаю, что было бы лучше использовать одну структуру и создать разные экземпляры, но у меня уже есть заголовок с большим количеством данных, загружаемых в структуры сюда.
Какая у вас структура? Использование указателей void обычно является хорошим признаком очень плохого дизайна. PS. 'p-> n' не имеет никакого смысла –
' void * 'теряет всю информацию. Чего ты ожидал?? –