“void(*)(int wall)”类型的 C++ 参数与“int”类型的参数不兼容

Posted

技术标签:

【中文标题】“void(*)(int wall)”类型的 C++ 参数与“int”类型的参数不兼容【英文标题】:C++ argument of type "void(*)(int wall) is incompatible with parameter of type "int" 【发布时间】:2019-10-02 23:55:53 【问题描述】:

我对 C++ 很陌生,我不确定如何纠正错误。这是我的代码的一部分,错误出现在我的主函数中。

#include <iostream>
using namespace std;

// Function declaration
void gallons(int wall);
void hours(int gallons);
void costPaint(int gallons, int pricePaint);
void laborCharges(int hours);
void totalCost(int costPaint, int laborCharges);

 // Function definition
 void gallons(int wall)
 
   int gallons;

   gallons = wall / 112;

   cout << "Number of gallons of paint required: " << gallons << endl;

    

  // Function definition
  void hours(int gallons)
  
    int hours;

    hours = gallons * 8;

    cout << "Hours of labor required: " << hours << endl;


  

  // Function definition
  void costPaint(int gallons, int pricePaint)
  
    int costPaint;

    costPaint = gallons * pricePaint;

    cout << "The cost of paint: " << costPaint << endl;
  

  // Function definition
     void laborCharges(int hours)
  
    int laborCharges;

    laborCharges = hours * 35;

     cout << "The labor charge: " << laborCharges << endl;
   

  // Funtion definition
  void totalCost(int costPaint, int laborCharges)
   
      int totalCost;

      totalCost = costPaint + laborCharges;

      cout << "The total cost of the job: " << totalCost << endl;
    

    // The main method
    int main()
    
    int wall;
    int pricePaint;

    cout << "Enter square feet of wall: ";
    cin >> wall;

    cout << "Enter price of paint per gallon: ";
    cin >> pricePaint;

    gallons(wall);

    hours(gallons); // here's where the error is

    costPaint(gallons, pricePaint); // here's where the error is

    laborCharges(hours); // here's where the error is 

    return 0;

        

这是我不断收到错误“void(*)(int wall) 类型的 C++ 参数与“int”类型的参数不兼容的地方“我得到它的小时数、costPaint 和人工费用。如果我能弄清楚找出如何解决第一个问题,我可以解决所有三个问题,因为它本质上是相同的问题。

【问题讨论】:

gallons(wall); -- 你对这行代码的意图是什么? laborCharges(hours);,你认为hours是什么意思? 你的gallons函数在哪里? gallons 是变量还是函数?语句gallons(wall) 表示gallons 是一个函数,而hours(gallons) 表示gallons 是一个变量。更复杂的是,您没有 gallons 的变量声明或函数声明。 你需要清楚地区分变量和函数。您已将hours 定义为两者(您在函数void hours(int gallons) 中定义了一个变量int hours;,这是非法的,但它令人困惑且是个坏主意)。你想让你的hours() 函数返回一个值吗?如果是这样,您需要将其定义为int hours(int gallons) 【参考方案1】:
#include <iostream>

using namespace std;

void hours(int gallons);

int gallons(int wall) 

    return wall * wall;


void hours(int gallons)


    int hours;

    hours = gallons * 8;

    cout << "Hours of labor required: " << hours << endl;


int main()

    int wall;
    int pricePaint;

    cout << "Enter square feet of wall: ";
    cin >> wall;

    cout << "Enter price of paint per gallon: ";
    cin >> pricePaint;

    hours(gallons(wall));

    return 0;


您可能需要这种代码。

在您的代码中,主函数中的“加仑”被视为一个函数,因为“加仑”是一个函数名。

但是,您不想使用函数作为参数,而是使用函数的返回值。

所以你只需要像上面那样修复代码。

【讨论】:

以上是关于“void(*)(int wall)”类型的 C++ 参数与“int”类型的参数不兼容的主要内容,如果未能解决你的问题,请参考以下文章

c语言中构造类型有几种?分别是啥?

C语言的数据类型分为几种?

C51的数据类型和C语言的数据类型的区别?

c语言中的指针类型属于原子类型还是结构类型?

C#_基本语法,数据类型,变量与常量

C语言的枚举类型知识