[英]How to initialize a reference member variable inside a member function & access it inside other member functions - 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]? (不傳遞過程向量作為參數)
由於scheduleProcess
是Process
的成員,因此它僅知道Process
對象知道的內容。 在此級別上,先前的過程是未知的。 有一些方法可以使用“未定義行為”,並對代碼進行更多假設以解決此問題,但是應避免使用這些方法。
一種避免所有情況的可移植解決方案,就是簡單地將上一個過程的完成時間作為參數傳遞,因為您知道在調用scheduleProcess
該值。 如果沒有上一個進程(數組中的第一個條目),則此完成時間將為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.