静态函数作为操作数

时间:2013-02-19 13:24:48

标签: c++ eclipse optimization arduino

我已经制作了一些静态函数,以便在不创建它们所属类的任何对象的情况下调用它们。我已将带有静态函数(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中,我应该在局部变量中保存静态函数的返回值并使用它们而不是返回值吗?

1 个答案:

答案 0 :(得分: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());