You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++操作struct报conversion from 'double' to non-scalar type错误原因

错误含义说明

error: conversion from 'double' to non-scalar type '' requested
该报错的核心是C++不支持double标量类型到自定义结构体Number非标量类型的隐式转换:你尝试用一个double类型的返回值直接初始化Number类型的变量,触发了类型不匹配的编译错误。
其中标量类型指算术类型、指针、枚举等单值基础类型,自定义结构体属于聚合非标量类型,无法直接用单个数值完成初始化。

代码问题梳理
  • zmiana函数返回值类型为double,但main函数中使用该返回值初始化Number类型的number2,二者类型完全不匹配,是触发编译错误的直接原因
  • 当前main函数中cout<<&number2的逻辑是打印number2的内存地址,和你预期输出4 3.14的要求不符
  • 你要求不能修改main函数的任何代码,因此只能通过调整zmiana函数的定义解决编译问题
修复方案

仅修改zmiana函数的返回值类型和返回逻辑即可解决编译错误,修改后的代码如下:

Number zmiana(Number *number,double scale){
    number->a *= scale;
    // 直接返回修改后的结构体,匹配main中Number类型变量的初始化要求
    return *number;
}

修改后编译可正常通过,但受限于不能修改main函数的要求,原代码的cout语句只会输出number2的内存地址,无法输出4 3.14。若要得到预期输出,需要将main函数中的cout语句调整为cout << number2.a << " " << number2.b;。

内容的提问来源于stack exchange,提问作者lelumpolelum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:27:02