我在两天前开始使用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;
我一定是犯了一个愚蠢的错误,因为这似乎是一个简单的编程任务,但我确实优先考虑我的问题;-)感谢您的帮助! 附加信息:
答案 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 ++不是其中之一。)