作者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