C ++不存在从“日期”到“日期(*)()”的合适转换函数

Posted

技术标签:

【中文标题】C ++不存在从“日期”到“日期(*)()”的合适转换函数【英文标题】:C++ no suitable conversion function from "Date" to "Date (*)()" exists 【发布时间】:2016-05-06 05:16:04 【问题描述】:

我正在开发一个工资单计划,但我一直在犯这个错误:

严重性代码描述项目文件行抑制状态 错误(活动)不存在从“日期”到“日期(*)()”的合适转换函数 Payroll c:\Users\Bart\Documents\Visual Studio 2015\Projects\Payroll\Payroll\Payroll.cpp 58

这是我的主要内容:

int main()

int count = 0;
int option = 0;
int month;
int day;
int year;

cout << fixed << setprecision(2);

Employee *employees[arraySize];

cout << "Welcome to the payroll program!" << endl;

cout << "Please enter the current month: ";
cin >> month;

cout << "Please enter the current day: ";
cin >> day;

cout << "Please enter the current month: ";
cin >> year;

Date currentDate(month, day, year);

while (option != 3)

    cout << endl << "Please select one of the following options" << endl;
    cout << "1 - Enter new employee information" << endl;
    cout << "2 - View payroll" << endl;
    cout << "3 - Exit the application" << endl;
    cout << "Please enter your option: ";
    cin >> option;

    switch (option)
    
        case 1:
            if (count < arraySize)
                
                    count+= createEmployee(employees, count, currentDate);
                    //This is where the error is occurring, currentDate is underlined
                
            else
            
                cout << "You cannot enter any more than " << arraySize << " employees." << endl;
            
                break;
        case 2:
            displayEmployees(employees, count);
            break;
        case 3:
            break;
        default:
            cout << "Please enter a valid menu selection";
    

return 0;

这是我的 createEmployee 方法的第一部分:

int createEmployee(Employee *employees[], int index, Date date())

string firstName;
string middleName;
string lastName;
int bDay;
int bMonth;
int bYear;
Date currentDate = date();
string SSN;
int option;

【问题讨论】:

你必须显示Date的声明和定义 最小可编译示例。 int createEmployee(Employee *employees[], int index, Date date()) 行中的最后一个参数对我来说似乎不正确。也许,你的意思是int createEmployee(Employee *employees[], int index, Date date) 【参考方案1】:

正如 Eissa N. 所说,编译器认为您正在尝试将 Date 类型的对象作为函数指针 Date(*)() 传递。

createEmployee 函数定义(和声明)中的Date date() 中删除()

其他解决方案是修复createEmployee 定义以接受Date (*date)(month, day, year) 函数指针并将函数createDate 传递给它并在createEmployee 函数中将参数传递给它。 (你必须定义 createDate 一个函数)

【讨论】:

OTOH,代码Date currentDate = date(); 表明它是一个函数 如果当前日期是一个函数,那么它缺少参数。在Date currentDate = date() 行或 currentDate 定义错误,它应该返回当前日期而不接收任何参数。 我想我实际上是智障。但这就是我在早上 7 点之前尝试这样做的结果。无论如何感谢您的帮助 @Anže Date currentDate = date() 不一定是错的;它可以是函子,这意味着对象Date 定义了一个operator() 以使theat 代码有效。 @Eissa N. 好点,我完全忘记了运算符重载

以上是关于C ++不存在从“日期”到“日期(*)()”的合适转换函数的主要内容,如果未能解决你的问题,请参考以下文章

从以下位置插入/转换日期:C++ 到 mySQL db

从开始日期到结束日期的每个日期的行

如何在python中从一个日期访问另一个日期的csv数据[重复]

不存在从 DbType System.DateTimeOffset 到已知 SqlCeType 的映射

是否可以从资产文件中获取上次修改日期?

java和postgresql中从日期到长的转换是不一样的