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 に答える