目前,我有此代码:

void writeLog(__FlashStringHelper* mes){

  Serial.println(mes);

  if(!logfile){
    logfile = SD.open(logpath,FILE_WRITE);
    if(!logfile) return;
  }

  logfile.write(mes);

}

void writeLog(char* mes){

  Serial.println(mes);

  if(!logfile){
    logfile = SD.open(logpath,FILE_WRITE);
    if(!logfile) return;
  }

  logfile.write(mes);

}

有没有一种方法可以重载函数以接受char *和__FlashStringHelper *而不编写主体两次?

谢谢!

最佳答案

如果可以使用模板,请尝试以下操作:

template <typename T>
void writeLog(T mes) {

    Serial.println(mes);

    if (!logfile) {
        logfile = SD.open(logpath, FILE_WRITE);
        if (!logfile) return;
    }

    logfile.write(mes);

}

关于c++ - 在函数中重载运算符,而无需编写主体2次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60617129/

10-10 16:14