作者yaochia (Well, well done)
看板EE_DSnP
标题Re: [问题] 请问hw1.2的第三题
时间Tue Mar 18 19:27:27 2008
我想请问一个更笨的问题
我对这题的想法是,把A所指到的array,其前4个byte (或前8个, anyway)
转换data type成size_t
於是在//TODO的注解之下,我这样写
getSize::
return ((size_t) *(arr-1));
然而於编译时却发生compiler印出疑似data type不能转换之错误讯息,如下所示
hw1.2.p3.cpp: In function `size_t getSize(T*) [with T = A]':
hw1.2.p3.cpp:27: instantiated from here
hw1.2.p3.cpp:18: error: `class A' used where a `size_t' was expected
我不知道为什麽会如此,於是我尝试在main中
直接把 *(arr-1) 的内容印出来
当然印出来之前,我把他转换成integer type 或是 size_t type
程式码如下
main()::
cout << ((int) *(arr-1)) << endl;
结果如下
hw1.2.p3.cpp: In function `int main()':
hw1.2.p3.cpp:29: error: `class A' used where a `int' was expected
其讯息显示此错误与前者应为同类型之错误
我想请问不知我哪里的观念错误,使得这样写是有问题的?
谢谢板上各位先进
※ 引述《Taiven (GO~~~)》之铭言:
: ※ 引述《fairyflame (妖精火焰)》之铭言:
: 可以问一下
: 题目第四行的
: A(int i =0) : _data(i) {} 是什麽意思吗?
: 跟它互看了很久 还是不了解
: 希望不是个笨问题@@ 谢谢回答
: : 题目中的:
: : The array size “13” is recorded around “arr’s”
: : location in the heap memory (hint: some bytes before arr’s address).
: : 是什麽意思呢?
: : 是指 A *arr = new A[13]; 之後
: : 13这个数字会存在heap memory的某一区之中吗@@"
: : 一直不知道要怎麽取出它的size说...><
: : 我在main底下做了尝试
: : int *arr = new int[13];
: : cout<<*(arr-1)<<endl;
: : 跑出来的并不是13耶@@"
: : 在网路上找了好久new的用法 也没看到哪里有提到怎麽取出array size
: : 可以请哪位大大帮忙开示一下吗<(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234
※ 编辑: yaochia 来自: 140.112.4.234 (03/18 19:29)
1F:推 musie:我也有相同的问题.. 03/18 19:33
2F:→ musie:但是经过大大指点..他说先int* 那个位置内的东西就好了 03/18 19:33
※ 编辑: yaochia 来自: 140.112.4.234 (03/18 19:35)
3F:→ yaochia:问题解决了 感谢楼上 :) 03/18 19:50