双类型赋值错误,C ++

时间:2015-02-21 02:08:36

标签: c++ variable-assignment

我在两天前开始使用C ++的事实中先解决了我的问题。

我收到此错误: “类型为”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;

我一定是犯了一个愚蠢的错误,因为这似乎是一个简单的编程任务,但我确实优先考虑我的问题;-)感谢您的帮助! 附加信息:

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

2 个答案:

答案 0 :(得分:1)

您的代码段中有两个问题:

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

此行不编译运算符&gt;&gt; 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;
    }

答案 1 :(得分:1)

getInput是函数的名称。该名称本身引用到该函数,但它不会调用该函数。并且由于函数名称在大多数上下文中被隐式转换为指向函数的指针,因此它变为类型double (*)()的表达式,或“返回double的函数指针(没有参数)”。

要调用函数,您需要在括号中使用参数列表来跟随其名称。如果没有参数,请使用空括号。

改变这个:

var1 = getInput;

到此:

var1 = getInput();

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