線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:960
推到 Plurk!
推到 Facebook!

有關class的問題.....

尚未結案
shinlo
一般會員


發表:7
回覆:15
積分:9
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-25 12:15:10 IP:202.145.xxx.xxx 未訂閱
不好意思又來請教大家一下.....    如果我自訂一個class,然後這個class裡有一個想動態建立的陣列,但是容量未知....    請問我如果在new這個class時,一併傳入想建立的動態陣列的個數...    就像是function一樣可以傳入引數,用這個引數來成為某一動態陣列的容量    這樣的構想是可以辦到嗎?    請各位提供給我一些想法與方向.....謝謝大家!  
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-25 12:59:30 IP:210.68.xxx.xxx 未訂閱
您要的是像下面這樣嗎?
.h
   class Test
   {
      public:
      int *pArray;
      __fastcall Test(int aSize)
      {
         pArray = new int [aSize];
      };
      __fastcall ~Test()
      {
         delete []pArray;
      };
   };    .cpp
   假設陣列大小 = 10
   Test *A = new Test(10);
   for (int i=0; i<10; i  )
   {
      A->pArray[i]=i;
   }       for (int i=0; i<10;ij  )
   {
      Memo1->Lines->Add(A->pArray[i]);
   }
   delete A;
~我也是在學習的階段,回答的不好請您多多見諒與指教~
shinlo
一般會員


發表:7
回覆:15
積分:9
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-26 00:14:38 IP:218.169.xxx.xxx 未訂閱
ㄟ....版大寫的其實是我想像中的一半...... 不過這樣也讓我覺得非常有信心.....^^ 我再說清楚一點好了..... 其實我是想把class當作物件原型..... 而我的手邊有一堆資料,當我把這些資料分類完畢之後.... 我可以知道總共有幾類,並且知道每一類有幾個.... 所以幾類就相當於我要new幾個class.... 而class裡的陣列數量會依照每類相對應的數量再去new陣列的大小... 當然....分類可以是先分個大概幾類.....然後再細分裡面的小分類... 也就是陣列可能除了本身大小之外,也可能還要再加上陣列的不同數量..... (上述可以用動態建立2維的陣列解決...或是更高維數的 ^^") 當然....這樣複雜下的動態建立法.....我真的很難有個方向去下手... 所以還煩請版大指引一下方向....^^ 謝謝您 ~~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-28 00:35:29 IP:61.216.xxx.xxx 未訂閱
引言: 如果我自訂一個class,然後這個class裡有一個想動態建立的陣列,但是容量未知.... 請問我如果在new這個class時,一併傳入想建立的動態陣列的個數...
您好:我的回應是針對您的問題所回答的,所以您應該一開始就問清楚的 所以您現在的需求應該是像下面的形式
.H
   class Test
   {
      public:
      int *pArray;
      void __fastcall CreateArray(int aSize);
      void __fastcall FreeArray();
   };
.CPP
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   //假設有10類
   Test *A = new Test[10];
   A[0].CreateArray(5); //假設第一類要分析的資料有5筆
   //作您要做的處理
   for (int i=0; i<5; i  )
   {
      A[0].pArray[i] = i;
   }
   for (int i=0; i<5; i  )
   {
      Memo1->Lines->Add(A[0].pArray[i]);
   }
   //釋放記憶體
   A[0].FreeArray();
   delete []A;    }
//---------------------------------------------------------------------------
void __fastcall Test::CreateArray(int aSize)
{
   pArray = new int [aSize];
}
//---------------------------------------------------------------------------
void __fastcall Test::FreeArray()
{
   delete []pArray;
}
可能會有沒考慮周詳的地方,可以等有經驗的前輩指導 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
shinlo
一般會員


發表:7
回覆:15
積分:9
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-28 10:36:47 IP:202.145.xxx.xxx 未訂閱
恩....謝謝版大!  ^^    從這個問題中...我發現我自己會被自己的思維給限制住....^^" ( Test *A = new Test[n](m) <===== < > ) 我一直無法從這個錯誤想法跳脫開...反而想著要如何去解決... 所以想到的問題越多....越覺得自己是那麼的渺小.....^^" (我的程式觀念還有很多的漏洞.... ><" ) 感謝版大不厭其煩的提供想法與手法...... 我會更努力的來站上學習更多的思考模式以及程式設計的手法..... 最後再次謝謝版大的指導....感謝! < >
系統時間:2024-05-06 9:20:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!