我想在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) 第二個是double等等... 相反,是否有任何通用的方式來簡單顯示數據而不用擔心數據類型?
我知道你可以通過模板來實現這一點,但是如果我只需要在C中做到這一點呢?
感謝, 基達
啊,C/C++,神奇的語言沒有可怕的模板和充分的就業機會...... –
在C中'void *'的全部觀點是你*不知道類型。不知道類型,你不能明智地「顯示數據」。你甚至不知道要顯示多少數據。 –
爲什麼不使用'boost :: any'? – rwols