0

我制作了一些静态函数,以便在不创建它们所属类的任何对象的情况下调用它们。我已将具有静态函数 (NTP.h) 的类的头文件包含到另一个类 (DayNumber) 中。

我想将某些函数的返回值作为 DayNumber 类函数的操作符。我收到未声明 NTP 的错误。这是代码。

头文件:

#include "NTP.h"

class DayNumber{
    private:
        int _day1YearLoop[];
        int _day4YearLoop[];

    public:
        int Days1YearLoop;
        int Days4YearLoop;

        DayNumber();
        void dayNumberCalc( NTP::getYear(),NTP::getMonth(),NTP::getDate());
        virtual ~DayNumber();

        bool checkLeapYear(int setYear);
};

#endif

实现 .cpp 文件(部分):

void DayNumber::dayNumberCalc( NTP::getYear(), NTP::getMonth(), NTP::getDate()){
    int setYear = NTP::getYear();
    int setMonth = NTP::getMonth();
    int setDay = NTP::getDate();
    //Days that passed from the beginning of the year for the first day each month
    int _day1YearLoop[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
    //i= _day1YearLoop;

    //Days that passed from the beginning of the second year since the 'for'.
    //The first day of the running year in a four-years loop.
    int _day4YearLoop[]={366,731,1096};

    if (checkLeapYear(setYear)){
        if (setMonth>2){ //Diorthwsi gia ton mina flebari
            Days1YearLoop = *(_day1YearLoop + (setMonth-1)) + setDay + 1;
            Days4YearLoop = Days1YearLoop;
        }
        else{
            Days1YearLoop = *(_day1YearLoop+(setMonth-1))+setDay;

为什么会这样?它不应该以这种方式工作吗?

同样在函数 dayNumberCalc 中,我应该将静态函数的返回值保存在局部变量中并使用它们而不是返回值吗?

4

1 回答 1

0

您的函数声明的语法不正确:

void dayNumberCalc( NTP::getYear(),NTP::getMonth(),NTP::getDate());

您应该在此处列出参数类型和名称。也许你想要:

void dayNumberCalc(int year, int month, int day);

然后你会调用它:

dayNumber.dayNumberCalc(NTP::getYear(),NTP::getMonth(),NTP::getDate());

NTP或者,如果您希望从内部调用的静态成员,请不要dayNumberCalc给它任何参数:

void dayNumberCalc();

或者,如果您希望参数具有静态函数给出的默认值,请执行以下操作:

void dayNumberCalc(int year = NTP::getYear(), int month = NTP::getMonth(),
                   int day = NTP::getDate());
于 2013-02-19T13:28:28.123 回答