关于结构的模板问题
想做一个结构链表搜索的模板,在指向结构成员时遇到了问题。
//结构的原型如下:
//只有一个指向下一个的结构指针,其他的都是普通的数据类型
typedef struct tagDATA
{
CString strData;
double dData;
tagDATA *next;
}DATA;
//测试代码:
#define STRUCT_DATA pNext-> strZqdm
#define QUERY_STRUCT(x,y) QueryStruct(x,y);
template <class STRUCT_T, class DATA_T>
STRUCT_T* QueryStruct(STRUCT_T *pSct, DATA_T data)
{
STRUCT_T *pNext = pSct;
while(pNext)
{
DATA_T temp = STRUCT_DATA;
if (temp == data)
{
break;
}
pNext = pNext-> next;
}
return pNext;
}
在pNext-> strZqdm这里就遇到了问题,因为定义了很多结构,每个结构不可能都有strZqdm这个成员,要是每个结构都定义一个相同名字的成员来作为查询载体,又感觉很变态,STRUCT_DATA 代表的意思在运行的时候已经固定了.
有没有什么办法能解决这个问题?
[解决办法]
DATA_T data
DATA_T temp = STRUCT_DATA;
这个DATA_T也给它搞成模板.
[解决办法]
用stl里的思想,让用户传给你一个函数指针。