双类型赋值错误,C++

double-type Assignment Error, C++

我用我两天前开始使用 C++ 的事实抢占了我的问题。

我收到这个错误: "a value of type "double (*)()" 不能分配给 "double" 类型的实体

我的相关代码:

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

double getInput()
{
    double val1 = 0.00;
    // prompts user for a Double value
    cin >> "Enter a Double value:  " >> val1;

    return val1;
}

在 main() 中,我有以下语句,其中等号带有红色下划线并产生上面提供的错误消息。

double var1;
var1 = getInput;

我一定是犯了一个愚蠢的错误,因为这似乎是一项简单的编程任务,但我确实抢先提出了我的问题 ;-) 感谢 any/all 的帮助! 附加信息:

  1. 使用 Visual Studio 2013 旗舰版
  2. 这是一个控制台应用程序

您的代码段中存在两个问题:

cin >> "Enter a Double value:  " >> val1;

此行不编译运算符>> 没有为 const char* 重载。 这应该更正如下:

cout<<"Enter a Double value:  " << std::endl;
cin>>val1;

第二个getInput是一个函数,它的类型是double(),它不同于double类型。因此应在代码段中按如下方式更正作业。

 int main()
    {
      double var1;
      var1 = getInput();
      std::cout<< var1<<std::endl;
      return 0;
    }

getInput 是函数名。该名称本身 引用 函数,但它不会 调用 函数。由于在大多数情况下,函数名称会隐式转换为指向函数的指针,因此它会成为 double (*)() 或 "pointer to function (with no parameters) returning double".

类型的表达式

要调用一个函数,您需要在其名称后跟一个括号中的参数列表。如果没有参数,使用空括号。

改变这个:

var1 = getInput;

对此:

var1 = getInput();

(有些语言的无参数函数调用不使用空括号。C++ 不是其中之一。)