c++ - 如何在 C++ 中访问成员函数内的对象数组?

标签 c++ arrays class object vector

我正在编写面向对象版本的 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;
 }

由于我正在使用对象 vector process[pid] 调用 scheduleProcess(),因此我应该能够操作与 process[pid] 对象相关的变量。如何在函数本身中访问 process[pid-1]? (不将过程 vector 作为参数传递)

最佳答案

由于 scheduleProcessProcess 的成员,它只知道 Process 对象知道的内容。在此级别上,以前的过程是未知的。有一些方法可以使用未定义行为并对您的代码做出更多假设来解决此问题,但应避免这些方法。

避免所有这些情况的一种可移植解决方案是简单地将前一个进程的完成时间作为参数传递,因为您在调用 scheduleProcess 时知道该值。如果没有前一个过程(数组中的第一个条目),则此完成时间将为 0。

关于c++ - 如何在 C++ 中访问成员函数内的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494942/

相关文章:

c++ - 在 C++ 中使用递归函数

c++ - 如何在类中声明一个 const size_t?

javascript - 我想要 javascript 中输入类型 &lt;input&gt; 的值

Ruby:我应该如何访问类中的实例变量?

c++ - 将效果应用于输出而不是位图?

C++ STL 库 vector 二维数组不越界

c++ - 利用 sandy bridge 的硬件真随机数生成器?

Java - Integer[] 和 int[] 内存差异

javascript - 使用 Lodash 查找集合中的嵌套对象

c++ - __device__ 类成员函数更改设备变量的值后从设备复制到主机时出现 cudaMemcpy 错误