首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中访问成员函数中的对象数组?

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

Stack Overflow用户
提问于 2019-08-14 20:42:12
回答 1查看 54关注 0票数 0

我正在写一个面向对象版本的FCFS调度算法,我遇到了一个问题。我需要知道是否有任何方法可以访问成员函数定义中的对象数组,而不是显式地将其作为参数传递。

我试过使用"this-pointer",但是由于当前进程的结束时间的计算需要前一个进程的结束时间,所以"this“不起作用。或者至少我认为它不会。我不知道如何使用"this“来访问”以前的“对象。

代码语言:javascript
复制
void Process :: scheduleProcess(int pid) {
     if(pid == 0) finishTime = burstTime;
     else finishTime = burstTime + 
     this->[pid-1].finishTime;

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

显然,我可以将对象数组作为参数发送并直接使用它。我只想知道有没有更好的方法:

这是调用上述函数的部分:

代码语言:javascript
复制
 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;
 }

由于我使用processpid调用scheduleProcess(),这是一个对象的向量,所以我应该能够操作与processpid对象相关的变量。如何在函数本身中访问processpid-1?(不将进程向量作为参数传递)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-14 20:48:56

因为scheduleProcessProcess的成员,所以它只知道Process对象知道的内容。之前的过程在这一层是未知的。有一些方法可以使用未定义的行为,并对您的代码做出更多假设来绕过这一点,但这些方法应该避免。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57494942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档