【问题标题】:error: conversion from 'double' to non-scalar type '' requested" struct in c++?错误:从'double'转换为非标量类型''请求“C++中的结构?
【发布时间】:2021-12-27 09:43:20
【问题描述】:

我想更改我的简单结构中的一个属性。我无法更改主要功能中的任何内容。 但是编译器给了我关于标量类型的错误——它到底是什么意思,我错了什么?

#include <iostream>

using namespace std;

struct Number{
    int a;
    double b;
};

double zmiana(Number *number,double scale){
    number->a*=scale;
    return number->a;
}

int main()
{
    Number number1={2,3.14};
    Number number2=zmiana(&number1,2.);
    cout<<&number2;
    return 0;
}

预期输出:4 3.14

【问题讨论】:

  • zmiana 返回double,但您将其分配给Number。该转换未定义。
  • 您希望在number2 中出现什么? cout&lt;&lt;&amp;number2 打印出number2 的内存地址,你期望实现什么?

标签: c++ struct type-conversion scalar non-type


【解决方案1】:

以下是潜在的解决方法:

#include <iostream>


struct Number
{
    int a;
    double b;
};

double zmiana( Number* number, double scale )
{
    number->a *= scale;

    return number->a;
}

int main()
{
    Number number1 = { 2, 3.14 };
    Number number2;
    number2.b = zmiana( &number1, 2. );
    std::cout << &number2; // Notice that what you do here is printing a pointer's value

    return 0;
}

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多