怎么了?不允许不完整的类型?

时间:2012-04-18 02:35:12

标签: c++

我不明白这段代码有什么问题。它说“我的功能不允许使用不完整的类型。”

这就是我要做的事情:

  

编写一个名为yrClac()的函数,该函数具有一个整数参数,表示自世纪之交以来的总天数(1.1.2000)以及名为年,月和日的参考参数。该函数用于计算传递给它的给定天数的当前年,月和日。使用引用,该函数应直接更改调用函数中的相应实际参数。对于这个问题,假设一年总是有365天,而每个月恰好有30天。

#include <iostream>

using namespace std;

void yrClac(int total, int &a, int &b, int &c);  // says incomplete type
                                                 // is not allowed

int main()
{
    int totaldays;
    cin >> totaldays;

    int year = 2000, month = 1, day = 1;
    void yrClac(totaldays, year, month, day);
    cout << year << month << day;

    system ("PAUSE");
    return 0;
}

void yrClac(int total, int &a, int &b, int &c)
{
    a = 365 / total;
    b = total - a * 12;
    c = total - b * 30;
}

4 个答案:

答案 0 :(得分:3)

调用函数时,不应该放置void(也就是返回类型)。在void yrClac(totaldays, year, month, day);中删除它,它应该可以。

答案 1 :(得分:3)

void yrClac(totaldays, year, month, day);声明一个函数,将totaldaysyearmonthday类型的对象作为参数。 (这些类型都没有被声明,这解释了抱怨“不完整类型”的编译错误消息)。

您想要调用yrCalc,而不是重载它,因此请使用yrClac(totaldays, year, month, day)(即删除void)。

答案 2 :(得分:2)

您的代码存在明显问题。

main()内你有这个声明

void yrClac(totaldays,year,month,day);

删除void

另一个潜在问题是您365/total 由于截断(如果总数大于365),这很可能会导致0 最好使用double total或输入。

答案 3 :(得分:1)

int year=2000, month=1, day=1;

void yrClac(totaldays, year, month, day);

cout << year << month << day;

删除“void”将正常工作。调用方法不需要告诉它应返回哪种类型。