当前位置:  开发笔记 > 编程语言 > 正文

如何使各种高度相似的类型的函数通用?

如何解决《如何使各种高度相似的类型的函数通用?》经验,为你挑选了1个好方法。

我有一个链接列表格式,不同类型的(int,double,例如):

struct DblNode {
    double value;
    DblNode * next;
}
struct IntNode {
    int value;
    IntNode * next;
}

现在我正在为这些列表做些事情,我遇到的问题是我不断复制和粘贴函数,进行次要类型编辑:

DblNode * dbl_listind(DblNode * head,int ind){
    DblNode * position = head;
    int counter = 0;
    while(counter < ind){
        position = position -> next;
        counter++;
    }
    return position;
}

然后重复int.

有没有办法以某种方式具有通用列表类型,然后以某种方式指定此功能,独立于我的链表的值成员的类型?



1> songyuanyao..:

这就是类/功能模板应该做的事情.例如

template 
struct Node {
    T value;
    Node * next;
}

template 
Node * listind(Node * head,int ind){
    Node * position = head;
    int counter = 0;
    while(counter < ind){
        position = position -> next;
        counter++;
    }
    return position;
}

// optional
using DblNode = Node;
using IntNode = Node;


@bordeo [更好的头文件](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file).
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有