一个函数模版的问题,希望高手指点
下面是一个利用函数模版处理栈的初始化问题。目的是想在抽象函数内部仍然可以使用抽象类型,可是编译不通过,不知该如何实现,希望高手指点。
#include "stdio.h "
#include "malloc.h "
typedef struct ElemType_int
{
int a;
}ElemType_int;
typedef struct ElemType_float
{
float a;
}ElemType_float;
typedef struct stack_int
{
ElemType_int *data;
stack_int *next;
}stack_int;
typedef struct stack_float
{
ElemType_float *data;
stack_float *next;
}stack_float;
template <typename stack,typename ElemType>
void init(stack *s);
//template <typename stack,typename ElemType>
//void change(stack *s1,stack *s2);
void main()
{
stack_int *s_int;
stack_int *s_float;
init(s_int);
init(s_float);
}
template <typename stack,typename ElemType>
void init(stack *s)
{
s-> data=(ElemType *)malloc(20*sizeof(ElemType));
}
[解决办法]
单步调试时会发现,在init中根本没有对data开辟空间成功
我在vs2005运行是正确的,空间分配是成功的。