为何这样无法求数组元素个数

yangyijk 2014-03-16 03:23:05
template <typename _Abs>
abs<_Abs>::abs(_Abs *abs_array)
{
int k= sizeof(abs_array)/sizeof(abs_array[0]);
std::cout<<k;
...

int main(){
int k[6]={-1,38,-629,4,-8,-36};
abs<int> a(k);
}

求教哪里错了
...全文
202 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
baichi4141 2014-03-23
  • 打赏
  • 举报
回复
引用 14 楼 yangyijk 的回复:
那我为什么失败了?
_Abs_type abs_array[]和_Abs_type ×abs_array是一个意思
yangyijk 2014-03-23
  • 打赏
  • 举报
回复
引用 9 楼 baichi4141 的回复:
那我为什么失败了? test.h: template <typename _Abs_type> class abs { public: abs(_Abs_type abs_array[]); private: _Abs_type *_abs_arr; int for_count; }; template <typename _Abs_type> abs<_Abs_type>::abs(_Abs_type abs_array[]) { int k=sizeof(abs_array)/sizeof(abs_array[0]); std::cout<<k; _abs_arr=new _Abs_type[k+1]; for (int i = 0; abs_array[i] != NULL; ++i) { if(abs_array[i] >= 0) _abs_arr[i]=abs_array[i]; else _abs_arr[i]=-abs_array[i]; } } main.cpp: int k[6]={-1,38,-629,4,-8,-36}; abs<int> a(k);
沙尘暗影 2014-03-22
  • 打赏
  • 举报
回复
引用 11 楼 lin5161678 的回复:
[quote=引用 6 楼 alanmaths 的回复:] ARRAY_SIZE这个宏可以获得数组大小
去看看 #1 的做法 你的写法是C语言的 C++一般不这样做[/quote]这样做的好处是,结果在编译期确定
沙尘暗影 2014-03-22
  • 打赏
  • 举报
回复
引用 8 楼 yangyijk 的回复:
[quote=引用 6 楼 alanmaths 的回复:]
ARRAY_SIZE这个宏可以获得数组大小

但我这个是在构造函数中,我试了一下,arrary_size有问题[/quote]



有何问题?
lin5161678 2014-03-22
  • 打赏
  • 举报
回复
引用 6 楼 alanmaths 的回复:
ARRAY_SIZE这个宏可以获得数组大小
去看看 #1 的做法 你的写法是C语言的 C++一般不这样做
lpcads 2014-03-22
  • 打赏
  • 举报
回复
弱弱地问下 在这种形参_Abs *abs_array 声明下 sizeof(abs_array) 不是等于sizeof(void*)吗
baichi4141 2014-03-22
  • 打赏
  • 举报
回复
yangyijk 2014-03-22
  • 打赏
  • 举报
回复
引用 6 楼 alanmaths 的回复:
ARRAY_SIZE这个宏可以获得数组大小
但我这个是在构造函数中,我试了一下,arrary_size有问题
qq120848369 2014-03-16
  • 打赏
  • 举报
回复
模板可以搞定的:

template<class T, size_t N>
size_t func(const T (&arr)[N])
{
return N;
}
沙尘暗影 2014-03-16
  • 打赏
  • 举报
回复
ARRAY_SIZE这个宏可以获得数组大小
沙尘暗影 2014-03-16
  • 打赏
  • 举报
回复
template<typename T, size_t N>
char(&ArraySizeHelper(T(&array)[N]))[N];
#define ARRAY_SIZE(array) (sizeof(ArraySizeHelper(array)))
yangyijk 2014-03-16
  • 打赏
  • 举报
回复
引用 3 楼 alanmaths 的回复:
要得到数组大小,就不能传入指针
那请问还有没有别的方法,我的目的是在构造函数中传入一个数组,然后再把元素依此拷贝到类成员数组中
沙尘暗影 2014-03-16
  • 打赏
  • 举报
回复
要得到数组大小,就不能传入指针
yangyijk 2014-03-16
  • 打赏
  • 举报
回复
引用 1 楼 baichi4141 的回复:
abs<_Abs>::abs(const _Abs & abs_array)
传入的是数组,(const _Abs & abs_array有问题吧
baichi4141 2014-03-16
  • 打赏
  • 举报
回复
abs<_Abs>::abs(const _Abs & abs_array)

65,208

社区成员

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

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