标题: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
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-331170-1-1.html




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

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