首页
社区
课程
招聘
[旧帖] [求助]函数模板的使用问题 0.00雪花
发表于: 2011-11-14 09:46 1380

[旧帖] [求助]函数模板的使用问题 0.00雪花

2011-11-14 09:46
1380
//源码如下,执行结果如何解释
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

template <DWORD h, DWORD hash, class A>
inline LPVOID pushargEx(A a1)
{        
        typedef LPVOID (WINAPI *newfunc)(A);
        printf("1:h=%d,hash=%d\n",h,hash);
        return 0;
}

template <DWORD h, DWORD hash, class A, class B>
inline LPVOID pushargEx(A a1,  B a2)
{        
        typedef LPVOID (WINAPI *newfunc)(A, B);
        printf("2:h=%d,hash=%d\n",h,hash);
        return 0;
}

template <DWORD h, DWORD hash, class A, class B, class C>
inline LPVOID pushargEx(A a1,  B a2, C a3)
{
        typedef LPVOID (WINAPI *newfunc)(A, B, C);
    printf("3:h=%d,hash=%d\n",h,hash);
        return 0;
}

int main(int argc, char* argv[])
{
        pushargEx<1,00>("123");
        pushargEx<10,01>("123");

        pushargEx<2,10>("123","1223");
        pushargEx<2,20>("123","1233");

        pushargEx<3,30>("123","1234","1234");
        pushargEx<3,40>("123","1253","1234");
        return 0;
}
向各位高手请教。
理论执行结果是:
1:h=1,hash=0
1:h=10,hash=1
2:h=2,hash=10
2:h=2,hash=20
3:h=3,hash=30
3:h=3,hash=40
可是实际结果是:
1:h=10,hash=1
1:h=10,hash=1
2:h=2,hash=20
2:h=2,hash=20
3:h=3,hash=40
3:h=3,hash=40

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 692
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
h=1,hash=0
h=10,hash=1
2:h=2,hash=10
2:h=2,hash=20
3:h=3,hash=30
3:h=3,hash=40
模板函数的重载,有一个参数的选择第一个函数,2个参数的选择第二个,三个参数的选择第三个,很正常么,
那个每个函数里的newfunc函数指针没用
2011-11-14 10:24
0
雪    币: 213
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
问题解决了,感谢
2011-11-14 15:50
0
游客
登录 | 注册 方可回帖
返回
//