gpt4 book ai didi

c++ - 从指针队列访问结构成员

转载 作者:行者123 更新时间:2023-11-30 05:05:00 25 4
gpt4 key购买 nike

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

这是我在头文件中的结构

#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文件

#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);
}

最佳答案

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

struct PCB *next_pcb_ptr;

然后在程序的主体部分和initiate_process中,使用struct PCB *代替int *

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;

}

}

关于c++ - 从指针队列访问结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com