| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:C++ 模板函数的定义问题
只看楼主 加入收藏
a328496647
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2010-11-29
结帖率:0
收藏
已结贴  问题点数:5 回复次数:3 
C++ 模板函数的定义问题
程序代码:
template<typename T, typename S>
void display(T<S> arr, string title)
{
    void (*p_element)(S) = print_element;
}

调用方法:
vector<int> ivec(10);
display(ivec, "ivec-Default");
提示:没有参数列表匹配的函数模板
T<S>的类型形如:vector<int>,deque<double>S就是基本数据类型。但是它依赖于,vector<int>中的int,也就是vector<int>那么S就是int,如果deque<double>那么S就是double,这个模板函数我该如何写?

有网友支招:
display<vector, int>(ivec, "ivec-Default");
这个方法也不行。
搜索更多相关主题的帖子: display double title 
2011-01-16 19:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
这样满足不满足你说的?

程序代码:
#include <vector>
#include <deque>
#include <list>
#include <iostream>
using namespace std;

template <typename S>
void print_e(S s) { cout << s << endl; }

template <typename T>
void display(T arr, string title)
{
    void (*p_e)(typename T::value_type) = print_e;
    cout << title; p_e(*arr.begin());
}

int main()
{
    vector<int> vec;
    vec.push_back(5);

    deque<char> deq;
    deq.push_back('A');

    list<double> ls;
    ls.push_back(10.1);

    display(vec, "vector<int>: ");
    display(deq, "deque<char>: ");
    display(ls, "list<double>: ");

    return 0;
}



[ 本帖最后由 pangding 于 2011-1-16 22:50 编辑 ]
2011-01-16 22:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
程序代码:
template< template<typename Type,typename Allocator> class Con, typename Type, typename Allocator >
void display( Con<Type,Allocator>& con )
{
}

#include <vector>
using namespace std;

int main()
{
    vector<int> ivec(10);
    display( ivec );
   

    return 0;
}

2011-01-18 11:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
哦。我还没怎么见过这种写法……
呵呵,不过我阅读过的 C++ 代码确实不是很多~
2011-01-18 21:43
快速回复:C++ 模板函数的定义问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020775 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved