c++ - 错误:对“const ItemInstance”类型的引用无法绑定到“void”类型的右值
问题描述
我试图在 MinecraftPE 的 iOS 版本中添加一个食谱,但我收到了这个错误。我应该怎么办?
错误:对“const ItemInstance”类型的引用无法绑定到“void”类型的右值 ..._inst->iteminstance(_inst, Item::mItems[432], 0), "###", "#S #", "###", d... 注意:在此处将参数传递给参数 'inst' void Recipes::addShapedRecipe(Recipes* res, const ItemInstance& inst, co...
源代码在这里:
调整.xm
#import "../substrate.h"
#import <UIKit/UIKit.h>
#import <mach-o/dyld.h>
#import <initializer_list>
#import <vector>
#import <map>
#import <mach-o/dyld.h>
#import <string>
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <initializer_list>
#import <vector>
#import <mach-o/dyld.h>
#import <UIKit/UIKit.h>
#import <iostream>
#import <stdio.h>
#include <sstream>
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <algorithm>
#include <fstream>
#include <ifaddrs.h>
#include <stdint.h>
#include <dlfcn.h>
#include "Item.h"
#include "ItemInstance.h"
#include "Recipes.h"
ItemInstance* _inst = NULL;
void (*ItemInstance::iteminstance_)(ItemInstance*, Item const*, int);
void ItemInstance::iteminstance(ItemInstance* inst, Item const* item, int meta) {
_inst = inst;
iteminstance_(inst, item, meta);
}
void (*Recipes::addShapedRecipe_)(Recipes* res, const ItemInstance& inst, const std::string& s1, const std::string& s2, const std::string& s3, const std::vector<Recipes::Type, std::allocator<Recipes::Type>>& ress);
void Recipes::addShapedRecipe(Recipes* res, const ItemInstance& inst, const std::string& s1, const std::string& s2, const std::string& s3, const std::vector<Recipes::Type, std::allocator<Recipes::Type>>& ress) {
addShapedRecipe_(res, inst, s1, s2, s3, ress);
}
void (*Recipes::_init_)(Recipes* res);
void Recipes::_init(Recipes* res) {
Recipes::_init_(res);
const std::vector<Recipes::Type, std::allocator<Recipes::Type>>& def = definition<Item*, Item*>('#', Item::mItems[296], 'S', Item::mItems[368]);
res->addShapedRecipe(res, _inst->iteminstance(_inst, Item::mItems[432], 0), "###", "#S#", "###", def);
}
%ctor {
MSHookFunction((void*)(0x1007569a4 + _dyld_get_image_vmaddr_slide(0)), (void*)&ItemInstance::iteminstance, (void**)&ItemInstance::iteminstance_);
MSHookFunction((void*)(0x100781d74 + _dyld_get_image_vmaddr_slide(0)), (void*)&Recipes::addShapedRecipe, (void**)&Recipes::addShapedRecipe_);
MSHookFunction((void*)(0x100774f40 + _dyld_get_image_vmaddr_slide(0)), (void*)&Recipes::_init, (void**)&Recipes::_init_);
MSHookFunction((void*)(0x1012ae238 + _dyld_get_image_vmaddr_slide(0)), (void*)&Item::mItems, NULL);
}
食谱.h
#pragma once
#include <memory>
#include <string>
#include <vector>
#include <stdint.h>
#include "ItemInstance.h"
class Recipes {
public:
class Type {
public:
Item* item;
uintptr_t* block;
ItemInstance inst;
char c;
};
public:
static void (*_init_)(Recipes* res);
static void _init(Recipes* res);
static void (*addShapedRecipe_)(Recipes* res, const ItemInstance& inst, const std::string& s1, const std::string& s2, const std::string& s3, const std::vector<Recipes::Type, std::allocator<Recipes::Type>>& ress);
static void addShapedRecipe(Recipes* res, const ItemInstance& inst, const std::string& s1, const std::string& s2, const std::string& s3, const std::vector<Recipes::Type, std::allocator<Recipes::Type>>& ress);
};
项目实例.h
#pragma once
#include <memory>
#include "Item.h"
class ItemInstance {
public:
static void (*iteminstance_)(ItemInstance*, Item const*, int);
static void iteminstance(ItemInstance* inst, Item const* item, int meta);
};
项目.h
#pragma once
#include <string>
#include <memory>
#include <vector>
#include <unordered_map>
class Item {
public:
char filler[200];
public:
static Item* mItems[512];
};
解决方案
要修复编译错误,您需要传递*_inst
,而不是_inst->iteminstance(_inst, Item::mItems[432], 0)
.
这并不能帮助您确保在调用_inst
之前已填充。Recipes::_init
大概你的定义ItemInstance
与你的钩子拦截的不匹配,所以你的定义Recipes::Type
也不匹配。去找到正确定义这些的地方。
推荐阅读
- html - 如何在 html 页面上有多个单独的 Paypal 购买按钮
- python - 为什么 !wget -P 不使用完整链接?
- python - codewards 不接受答案 --- 但我的输出与他们想要的输出匹配
- r - 运行随机森林模型时出现此错误
- google-app-engine - 谷歌云跟踪在快递中不起作用
- python - 当数字的总和为负时会出现错误,因为 - 会导致错误,因为数据不是同一类型的日期
- python - 为什么(False + True)在python中返回一个整数
- c# - 如何使存储为 C# 字符串的 HTML 元素正确显示?
- javascript - Bot 说它在 0 个服务器中,有 0 个频道,有 0 个用户
- mysql - Laravel 8:查询构建器转义“大于”运算符