大家来看看这个C++中的template到底是怎么一回事!太奇怪了。

bacoo_zh 2009-05-16 09:26:46
下面这么写是正确的,gcc 4.3 是可以的。
#include <iostream>

using namespace std;

typedef int (*tfun)(int);

template<tfun function>
struct S {
void show(){
cout<<function(100)<<endl;
}
};

int fun(int n) {
return n;
}

int main2() {
S<fun> t;
t.show();
return 0;
}


请大家解释解释这个模板的使用到底是怎么一回事,此外,我如果想把show这个成员方法的定义拿到类外部,该如何写呢?
template<tfun function>
struct S {
void show();
};

?????????//这里到底该怎么写?
void S::show(){
cout<<function(100)<<endl;
}
...全文
83 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyadong 2009-05-16
  • 打赏
  • 举报
回复
我如果想把show这个成员方法的定义拿到类外部,该如何写呢?

#include <iostream>

using namespace std;

typedef int (*tfun)(int);

template <tfun function>
struct S {
void show();
};
template <tfun function>
void S<function>::show()
{
cout <<function(100) <<endl;
}
int fun(int n) {
return n;
}

int main() {
S <fun> t;
t.show();
return 0;
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧