簡體   English   中英

如何在C ++中的成員函數內部訪問對象數組?

[英]How to access array of objects inside member function in C++?

我正在編寫面向對象的FCFS調度算法版本,但遇到了問題。 我需要知道是否有任何方法可以訪問成員函數定義內的對象數組,而無需顯式傳遞它作為參數。

我嘗試使用“ this-pointer”,但是由於當前進程的完成時間的計算需要上一個的完成時間,因此“ this”將不起作用。 或者至少我認為不會。 我不知道如何使用“ this”訪問“ previous”對象

void Process :: scheduleProcess(int pid) {
     if(pid == 0) finishTime = burstTime;
     else finishTime = burstTime + 
     this->[pid-1].finishTime;

     turnAroundTime = finishTime - arrivalTime;
     waitingTime = turnAroundTime - burstTime;
}

我顯然可以將對象數組作為參數發送並直接使用。 我只想知道是否有更好的方法可以做到這一點:

這是調用上述功能的部分:

 for(int clockTime = 0; clockTime <= maxArrivalTime(process); 
 clockTime++) {
    // If clockTime occurs in arrivalTime, return pid of that 
 process
         int pid = arrivalTimeOf(clockTime, process);
         if(pid >= 0) {            
             process[pid].scheduleProcess(pid);

         } else continue;
 }

由於我使用process [pid]來調用scheduleProcess(),process [pid]是對象的向量,因此我應該能夠處理與process [pid]對象有關的變量。 我如何在函數本身中訪問process [pid-1]? (不傳遞過程向量作為參數)

由於scheduleProcessProcess的成員,因此它僅知道Process對象知道的內容。 在此級別上,先前的過程是未知的。 有一些方法可以使用“未定義行為”,並對代碼進行更多假設以解決此問題,但是應避免使用這些方法。

一種避免所有情況的可移植解決方案,就是簡單地將上一個過程的完成時間作為參數傳遞,因為您知道在調用scheduleProcess該值。 如果沒有上一個進程(數組中的第一個條目),則此完成時間將為0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM