Ошибка C ++: недопустимое использование нестатической функции-члена sprintf - PullRequest
1 голос
/ 03 июня 2019

У меня есть простой класс с различными статическими элементами.Пока я не вызываю sprintf, все компилируется хорошо.Когда sprintf включен (рядом с последней строкой), возникает нестатическая ошибка члена.

Это мой первый набег на c ++;Остальные 500 строк кода компилируются.У меня есть несколько классов со статическими элементами.

Не уверен, как это убрать.

class RTCClock {
private:
    static unsigned long lastMillisCheck;
    static RTC_DS1307 rtc;
    const char daysOfTheWeek[7][12] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
    static bool isInitialized(bool setInitialized) {
        bool isInitialized = true;
        int initAddress = 55;  // use last vram entry
        int initializedValue = 0xAF;
        int initState = rtc.readnvram(initAddress);
        if (initState != initializedValue) {
            if (setInitialized) {
                rtc.writenvram(initAddress, initializedValue);
                rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
            }
            else {
                isInitialized = false;
            }
        }
        return isInitialized;
    }
public:
    static void Init() {
        isInitialized(true);
    }
    static char* GetDateTime() {
        char dtString[16];
        DateTime dt = rtc.now();
        char prototype[] = "%d/%d-%d:%d:%d";
        sprintf(dtString, prototype, dt.month, dt.day, dt.hour, dt.minute, dt.second);
        return dtString;
    }
};
...