首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从指针队列访问struct的成员

从指针队列访问struct的成员
EN

Stack Overflow用户
提问于 2018-02-04 07:22:40
回答 1查看 680关注 0票数 1

我在尝试为我的结构PCB的成员变量赋值时遇到问题。我使用了一个指向我的结构的指针队列。因此,我首先取消对传递给inititiate_process函数的指针的引用,然后尝试引用来自ready_queue的指针以访问成员变量。如何访问此成员变量?我在这行代码(static_cast<PCB*>(ready_queue->front()))->next_pcb_ptr = &pcb;上得到了一个“无效的类型转换”。

下面是我在一个头文件中的结构

代码语言:javascript
运行
复制
#ifndef PCB_H
#define PCB_H

struct PCB {
    int p_id;
    int *page_table_ptr;
    int page_table_size;
    int *next_pcb_ptr;
};
#endif // !PCB_H

这是我的cpp源文件

代码语言:javascript
运行
复制
#include <iostream>
#include <queue>
#include "PCB.h"

using namespace std;

void initiate_process(queue<int*>* ready_queue) {
    // allocate dynamic memory for the PCB
    PCB* pcb = new PCB;

    // assign pcb next
        if(!(ready_queue->empty())){
            // get prior pcb and set its next pointer to current
            (static_cast<PCB*>(ready_queue->front()))->next_pcb_ptr = &pcb;
        }
}

void main(){
    queue<int *> ready_queue;
    initiate_process(&ready_queue);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-04 07:49:59

您确定需要static_cast吗?我建议您在PCB.h中使用

代码语言:javascript
运行
复制
struct PCB *next_pcb_ptr;

然后在程序和initiate_process的主要部分,使用struct PCB *而不是int *。

代码语言:javascript
运行
复制
void initiate_process(queue<struct PCB *> *ready_queue) {

  // allocate dynamic memory for the PCB
  struct PCB *pcb = new struct PCB;

  // assign pcb next
  if(!(ready_queue->empty())){

    (ready_queue->front())->next_pcb_ptr = pcb;

  }

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

https://stackoverflow.com/questions/48603105

复制
相关文章

相似问题

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