gpt4 book ai didi

c++ - uint8_t 类型的参数与 char* 类型的参数不兼容

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

我最近一直遇到标题错误,我不太确定自己做错了什么,有人有什么想法吗?相关代码如下

只读

//Rom.h
#pragma once
#include <fstream>
struct ROM {
uint8_t* memblock;
std::fstream rom;
std::streampos size;
int flag;

void ROM::LoadROM(std::string path, int flag);
void ROM::BinaryDump(std::string path, std::streampos size);
}

ROM.cpp

//Rom.cpp
#include <iostream>
#include "Rom.h"

void ROM::LoadROM(std::string path, int flag) {
this->rom.open(path, std::ios::in | std::ios::binary | std::ios::ate);

if (rom.is_open()) {
this->size = rom.tellg();
std::cout << "\nThe Rom is " << rom.tellg() << " byte(s) long." << std::endl;
this->memblock = new uint8_t[(unsigned int)this->size];
std::cout << rom.tellg() << " Bytes of memory have been allocated" << std::endl;
rom.seekg(0, std::ios::beg);
rom.read(this->memblock, (unsigned int)this->size);
std::cout << "The contents of the file are stored in memory" << std::endl;
rom.close();
if (flag == 0) {
}
else {
BinaryDump(path, this->size);
}
}
}

void ROM::BinaryDump(std::string path, std::streampos size) {
std::fstream binDump(path, std::ios::out | std::ios::binary);

binDump.write(this->memblock, size);
delete[] this->memblock;
binDump.close();
std::cout << "The ROM has been dumped" << std::endl;
}

抱歉,如果这很明显,但我觉得在这里迷路了。

最佳答案

uint8_tchar 是不同的类型。 (好吧 - 这取决于系统,但在您的系统上它们是不同的)。您不能互换使用这两个名称。

你的问题没有提到哪一行出错了,但是如果你查一下你会发现你正在传递 uint8_t * 实际上函数需要 char *

我想应该是 rom.read 。如果是这样,那么您可以通过以下方式解决问题:

rom.read( reinterpret_cast<char *>(memblock), size );

您不需要使用冗余的 unsigned int 强制转换或 this-> 前缀。

另一种可能的解决方案是使 memblock 具有 char * 类型。

关于c++ - uint8_t 类型的参数与 char* 类型的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39402905/

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