如何修复函数样式强制转换或类型构造的预期"("?

How do I fix this Expected '(' for function-style cast or type construction?

本文关键字:类型 样式 函数 何修复 转换      更新时间:2023-10-16

我正在为类编写代码,但我一直得到一个--函数样式强制转换或类型构造所需的"("--错误,它显示cout<<void enterStolenMoonPies(int*array,int numDays(<lt;endl;但我不知道该怎么修?是我格式化它的方式,还是实际函数有问题?

#include <iostream>
#include "Moonpie.h"
//#include "Functions.cpp"
using namespace std;
int* makeArray(int days);
void enterStolenMoonPies(int* array, int numDays);
int* totalMoonPies(int* array, int numDays);
float averageMoonPies(int numDays, int sum);
int* highestMoonPies(int* array, int numDays);
int* lowestMoonPies(int* array, int numDays);

int main()
{
int days;
cout <<"How many days did Jane steal moon pies?: ";
cin >> days;
cout << "Enter the number of moon pies stolen each day:";
cout << void enterStolenMoonPies(int* array, int numDays) << endl;
cout << "---------Results--------------"<< endl;
cout << "Total number of Moon Pies stolen: ";
int* totalMoonPies(int* array, int numDays);
cout << "Average number of Moon Pies stolen per day: ";
float averageMoonPies(int numDays, int sum);
cout << "Highest amount of Moon Pies stolen in a day: ";
int* highestMoonPies(int* array, int numDays);
cout << "Lowest amount of Moon Pies stolen in a day: ";
int* lowestMoonPies(int* array, int numDays);
}

这是标题:

#ifndef Moonpie_h
#define Moonpie_h
int* makeArray(int days);
void enterStolenMoonPies(int* array, int numDays);
int* totalMoonPies(int* array, int numDays);
float averageMoonPies(int numDays, int sum);
int* highestMoonPies(int* array, int numDays);
int* lowestMoonPies(int* array, int numDays);
#endif /* Moonpie_h */

这是函数文件:

#include <iostream>
//#include "Moonpie.cpp"

using namespace std;
int* makeArray(int days)
{
int* numDays = new int[days];
return numDays;
}

void enterStolenMoonPies(int* array, int numDays)
{
int stolenMP = 0;
for(int i =0; i<numDays; i++)
{
cout << "Enter the number of moon pies stolen each day:" << endl;
cout << "Day " << i << ": ";
cin >> stolenMP;
}
}

int* totalMoonPies(int* array, int numDays)
{
int* sum = 0;
for(int i = 0; i < numDays; i++)
{
sum += array[i];
}
return sum;
}


float averageMoonPies(int numDays, int sum)
{
float average;
average = static_cast<float>(sum)/numDays;
return average;
}


int* highestMoonPies(int* array, int numDays)
{
int* highest;
highest = &array[0];
for(int i = 0; i <= numDays; i++)
if (&array[i] > highest)
highest = &array[i];
return highest;
}

int* lowestMoonPies(int* array, int numDays)
{
int* lowest;
lowest = &array[0];
for(int i = 0; i <= numDays; i++)
if (&array[i] < lowest)
lowest = &array[i];
return lowest;
}

与注释一样,您的代码在很多方面都不正确。您的函数不应该声明两次(头中有一个,源中也有一个(,但这只是众多问题中的一个。

cout << "Enter the number of moon pies stolen each day:";
cout << void enterStolenMoonPies(int* array, int numDays) << endl;

不会起作用。它至少应该是

cout << "Enter the number of moon pies stolen each day:";
cout << enterStolenMoonPies(array, numDays) << endl;

删除main之前的所有函数声明,并包含相应的头文件。

你最好从一个简单的程序重新开始,因为它更复杂,所以不要想太多地使用这些指针。