错误C2678:二进制'=':找不到运算符? [英] error C2678: binary '=': no operator found?

查看:105
本文介绍了错误C2678:二进制'=':找不到运算符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到以下错误:

错误C2678:binary'=':找不到运算符,它接受类型为'const xe :: kernel的左操作数: :shim :: ParamBase< uint32_t>'

error C2678: binary '=': no operator found which takes a left-hand operand of type 'const xe::kernel::shim::ParamBase<uint32_t>'

现在我正在更改代码:

SHIM_CALL XamUserAreUsersFriends_shim(PPCContext* ppc_context, KernelState* kernel_state) { uint32_t user_index = SHIM_GET_ARG_32(0); uint32_t unk1 = SHIM_GET_ARG_32(1); uint32_t unk2 = SHIM_GET_ARG_32(2); uint32_t out_value_ptr = SHIM_GET_ARG_32(3); uint32_t overlapped_ptr = SHIM_GET_ARG_32(4); XELOGD("XamUserAreUsersFriends(%d, %.8X, %.8X, %.8X, %.8X)", user_index, unk1, unk2, out_value_ptr, overlapped_ptr); if (user_index == 255) { user_index = 0; } SHIM_SET_MEM_32(out_value_ptr, 0); if (user_index) { // Only support user 0. SHIM_SET_RETURN_32(X_ERROR_NOT_LOGGED_ON); return; } X_RESULT result = X_ERROR_SUCCESS; const auto& user_profile = kernel_state->user_profile(); if (user_profile->signin_state() == 0) { result = X_ERROR_NOT_LOGGED_ON; } // No friends! SHIM_SET_MEM_32(out_value_ptr, 0); if (overlapped_ptr) { kernel_state->CompleteOverlappedImmediate(overlapped_ptr, result); SHIM_SET_RETURN_32(X_ERROR_IO_PENDING); } else { SHIM_SET_RETURN_32(result); } }

对此:

dword_result_t XamUserAreUsersFriends(dword_t user_index, unknown_t unk1, unknown_t unk2, lpvoid_t out_value_ptr, pointer_t<XAM_OVERLAPPED> overlapped_ptr) {
	if (user_index == 255) {
		user_index = 0;
	}

	*out_value_ptr = 0;

	if (user_index) {
		// Only support user 0.
		return X_ERROR_NOT_LOGGED_ON;
	}

	X_RESULT result = X_ERROR_SUCCESS;

	const auto& user_profile = kernel_state()->user_profile();
	if (user_profile->signin_state() == 0) {
		result = X_ERROR_NOT_LOGGED_ON;
	}

	// No friends!
	*out_value_ptr = 0;

	if (overlapped_ptr) {
		kernel_state()->CompleteOverlappedImmediate(overlapped_ptr, result);
		return X_ERROR_IO_PENDING;
	}
	else {
		return result;
	}
}
DECLARE_XAM_EXPORT(XamUserAreUsersFriends, ExportTag::kImplemented);

根据此参考:




      • 使用 int_t =
        const shim :: ParamBase < int32_t > & ;
      • < li style ="font-weight:normal; vertical-align:top">
      • using int_t = const shim::ParamBase<int32_t>&;

使用 word_t =
const shim :: ParamBase < uint16_t > & ;
using word_t = const shim::ParamBase<uint16_t>&;

推荐答案

6月15日/ 2017 2:39 PM,drillsar写道:

On 6/15/2017 2:39 PM, drillsar wrote:


我收到以下错误:
$
错误C2678:binary'=':没有运算符发现哪个采用类型'const xe :: kernel :: shim :: paramBase< uint32_t>'的左手操作数'

I get the following error:
error C2678: binary '=': no operator found which takes a left-hand operand of type 'const xe::kernel::shim::ParamBase<uint32_t>'

using dword_t =const shim::ParamBase<uint32_t>&;
dword_result_t XamUserAreUsersFriends(dword_t user_index, unknown_t unk1, unknown_t unk2, lpvoid_t out_value_ptr, pointer_t<XAM_OVERLAPPED> overlapped_ptr) {
    if (user_index == 255) {
        user_index = 0;
    }


user_index的类型为const shim :: ParamBase< uint32_t>& 。它是常量,但您正在尝试修改它。因此错误。

user_index is of type const shim::ParamBase<uint32_t>& . It's const, but you are trying to modify it. Hence the error.


这篇关于错误C2678:二进制'=':找不到运算符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆