Я хочу создать общий связанный список в C/C++ (без использования шаблонов C++). я написал следующий простую программу и она отлично работает как сейчас -Связанный список с помощью указателей Void *
typedef struct node
{
void *data;
node *next;
}node;
int main()
{
node *head = new node();
int *intdata = new int();
double *doubledata = new double();
char *str = "a";
*doubledata = 44.55;
*intdata = 10;
head->data = intdata;
node *node2 = new node();
node2->data = doubledata;
head->next = node2;
node *node3 = new node();
node3->data = str;
node3->next = NULL;
node2->next = node3;
node *temp = head;
if(temp != NULL)
{
cout<<*(int *)(temp->data)<<"\t";
temp = temp->next;
}
if(temp != NULL)
{
cout<<*(double *)(temp->data)<<"\t";
temp = temp->next;
}
if(temp != NULL)
{
cout<<*(char *)(temp->data)<<"\t";
temp = temp->next;
}
return 0;
}
Мой вопрос - мне нужно знать тип данных данных я печать в коде выше. Например, первый узел является int, поэтому я написал - * (int *) (temp-> data) second double и т. Д. Вместо этого существует ли какой-либо общий способ простого отображения данных, не беспокоясь о тип данных?
Я знаю, что вы можете достичь этого с помощью шаблонов, но что делать, если я должен делать это только на C?
Спасибо, Кедар
Ahh, C/C++, этот волшебный язык без страшных шаблонов и возможностей для трудоустройства ... –
Весь смысл 'void *' в C состоит в том, что вы * не знаете тип. Не зная тип, вы не можете разумно «отображать данные». Вы даже не знаете, сколько * данных для отображения. –
Почему бы не использовать 'boost :: any'? – rwols