| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1198 人关注过本帖
标题:求助!一道小程序
只看楼主 加入收藏
crazy23
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-3-4
收藏
 问题点数:0 回复次数:12 
求助!一道小程序

#include "stdafx.h"
#include <iostream.h>
using namespace std;

template <int N>
class A
{
enum
{
result=N+A<N-1>::result
};
};
template<>
class A<0>
{
enum{result=0};
};

int _tmain(int argc, _TCHAR* argv[])
{
printf("%d",A<100>::result);
return 0;
}
这个我是在VS2003下编译的,思想就是这段程序的思想,问题是这些所用到的方法是什么,有点不懂,能解释下吗?说明其作用,还有错哪了?谢谢

搜索更多相关主题的帖子: result int enum 
2007-09-06 22:49
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

是个递归吧,这种写法比较少见,

我不知道正确否。


Fight  to win  or  die...
2007-09-06 23:23
crazy23
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-3-4
收藏
得分:0 
回复:(aipb2007)是个递归吧,这种写法比较少见,我...

template<int N>
class A{
enum {result=N+A<N-1>::result};
};
template<>
class A<0>{

enum{result=0};
};
void main(void)
{
printf("%d",A<100>::result);
}
能不能就是先给我解释一下那枚举,为什么要那么定义呢?还有就是定义一个类,类里面是一个枚举,此时类里面的枚举又怎么是class A{enum {result=N+A<N-1>::result};};这样定义的呢?还有就是下面的class A<0>{enum{result=0};};A<0>这是什么东西呀,再加上这输出printf("%d",A<100>::result);A<100>::result不懂呀!


2007-09-07 07:20
virusswb
Rank: 1
等 级:新手上路
威 望:1
帖 子:342
专家分:0
注 册:2005-8-6
收藏
得分:0 
建议看c++中的模板

jorden008@
2007-09-07 13:26
crazy23
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-3-4
收藏
得分:0 

看过了,可是那的内容不多就是为了解决函数重载的问题,其它的就没有什么了


2007-09-07 14:20
cince
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2007-1-21
收藏
得分:0 
概念问题!
买书去。或者去图书馆

There Is Nothing Impossible In My Dictionary.
2007-09-07 23:14
江湖之神
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-7-20
收藏
得分:0 

2007-09-08 13:23
流川枫2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-9
收藏
得分:0 
以下是引用crazy23在2007-9-7 7:20:37的发言:

template<int N>
class A{
enum {result=N+A<N-1>::result};
};
template<>
class A<0>{

enum{result=0};
};
void main(void)
{
printf("%d",A<100>::result);
}
能不能就是先给我解释一下那枚举,为什么要那么定义呢?还有就是定义一个类,类里面是一个枚举,此时类里面的枚举又怎么是class A{enum {result=N+A<N-1>::result};};这样定义的呢?还有就是下面的class A<0>{enum{result=0};};A<0>这是什么东西呀,再加上这输出printf("%d",A<100>::result);A<100>::result不懂呀!

printf("%d",A<100>::result);A<100>::result是C的输出吧。。。
怎么C++还要用这个啊???

2007-09-09 12:24
冰的热度
Rank: 2
等 级:禁止访问
威 望:5
帖 子:404
专家分:0
注 册:2006-12-2
收藏
得分:0 
怪问题,没见过......

科学是永恒之迷...... 我的博客http://blog..cn/u/1267727974 阅读我的blog,懂与不懂都是收获!
2007-09-09 13:53
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
收藏
得分:0 

我的理解:
这是一个类似递归的类,cout<<A<100>::result<<endl;这句的意思好象是求0+1+2+...+100的值
但里面为什么用枚举我就有点晕了
[CODE]
template<int N>
class A
{
public:
static inline int fun()
{
return N + A<N-1>::fun() ;
}
};

template<>
class A<0>
{
public:
static inline int fun()
{
return 0;
}
};[/CODE]
这样不是挻爽的嘛,干嘛用枚举呢


If you shed tears when you miss the sun, you also miss the stars.
2007-09-09 18:25
快速回复:求助!一道小程序
数据加载中...
 
   



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

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