enum和const数组

Kevin_qing 2005-12-23 01:23:48
编译时如何得到enum的个数和第n个的值?

例如

const int val[]={
1,3,5,7
};

或者 enum val{1,3,5,7}


template <int n>
class Some{
};

想得到类似如下语法的效果.
typedef Some<val[1]> any;//编译错误,val[1]在编译时不能确定值

如果enum不行的话,只有老老实实的特化模板了....
template <int idx>
struct Array;
template <>Array[0]{
enum {Result=1};
}

......


...全文
318 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyanhun 2005-12-29
  • 打赏
  • 举报
回复
看起来比较复杂 ~~
Kevin_qing 2005-12-29
  • 打赏
  • 举报
回复
我需要实现编译时的value to value映射,考虑数组是很方便的.可惜const 数组元素的值不是再编译时期决定的,只有用模板实现了.
template <int idx>struct myMap;
template <> struct myMap<0>{
enum{value=1024};
};
templaye <> struct myMap<1>{
enum{value=512}
};

..........



template <typename Host> struct fast{
void* operator new(size_t size);
.....
};

template <typename Host>
void* typename fast<Host>::operator new(size_t size){
enum {size=sizeof(Host)};
return FastAllocator<size,myMap<size2Idx<size> >::value>::alloc();
}



class useFastAlloc:public fast<useFastAlloc>{
....
};

上面的代码理解意思就行了
wzjall 2005-12-24
  • 打赏
  • 举报
回复
我记得也是不可以的
vollin 2005-12-23
  • 打赏
  • 举报
回复
或者定义成const的也行啊。
struct Array
{
Array(int idx):m_idx(idx)
{
}
const int m_idx;
};
vollin 2005-12-23
  • 打赏
  • 举报
回复
为什么不这样?
struct Array
{
Array(int idx):m_idx(idx)
{
}
int m_idx;
};

Array a(val[0]);
guyanhun 2005-12-23
  • 打赏
  • 举报
回复
模板特化吧
双杯献酒 2005-12-23
  • 打赏
  • 举报
回复
gz
RainWindy 2005-12-23
  • 打赏
  • 举报
回复
不语
foochow 2005-12-23
  • 打赏
  • 举报
回复
好像不行吧...以前有人问过...
guyanhun 2005-12-23
  • 打赏
  • 举报
回复
class test{
public:
//static const int val3[4];
static const int val4=1;
};

typedef Some<test::val4> any;
zw24127 2005-12-23
  • 打赏
  • 举报
回复
呵呵
还是圣诞节快乐!!
sankt 2005-12-23
  • 打赏
  • 举报
回复
不解
友情up
Kevin_qing 2005-12-23
  • 打赏
  • 举报
回复
- -
Kevin_qing 2005-12-23
  • 打赏
  • 举报
回复
up

65,187

社区成员

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

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