【问题标题】:Getting error request for member 'length' in 'rw_ssid', which is of non-class type 'char*'在'rw_ssid'中获取成员'length'的错误请求,它是非类类型'char *'
【发布时间】:2020-09-18 06:31:24
【问题描述】:

我有一个公共函数 save 接受文件 configuration.cpp

中的rw_ssidrw_pswd char 类型变量
namespace Eeprom
{

void configuration::initialize(){
    EEPROM.begin(512);
}

void configuration::save(char* rw_ssid, char* rw_pswd) {
    for (int i = 0; i < 128; ++i) {
      EEPROM.write(i, 0);
      delay(10);
    }
    for (int i = 0; i < rw_ssid.length(); ++i) {
      EEPROM.write(i, rw_ssid[i]);
    }
    for (int i = 0; i < rw_pswd.length(); ++i) {
      EEPROM.write(32 + i, rw_pswd[i]);
    }

    EEPROM.commit();
    Serial.println("Written to EEPROM!");
    Serial.print("SSID: ");
    Serial.println(rw_ssid);
    Serial.print("PASS: ");
    Serial.println(rw_pswd);
    Funcs::connection::connectWifi(rw_ssid, rw_pswd);
    Serial.print("IP connection: ");
    Serial.println(WiFi.localIP());
  }

void configuration::save(char* rw_ssid, char* rw_pswd) {
    for (int i = 0; i < 128; ++i) {
      EEPROM.write(i, 0);
      delay(10);
    }
    for (int i = 0; i < rw_ssid.length(); ++i) {
      EEPROM.write(i, rw_ssid[i]);
    }
    for (int i = 0; i < rw_pswd.length(); ++i) {
      EEPROM.write(32 + i, rw_pswd[i]);
    }

    EEPROM.commit();
    Serial.println("Written to EEPROM!");
    Serial.print("SSID: ");
    Serial.println(rw_ssid);
    Serial.print("PASS: ");
    Serial.println(rw_pswd);
    Funcs::connection::connectWifi(rw_ssid, rw_pswd);
    Serial.print("IP connection: ");
    Serial.println(WiFi.localIP());
  }
}

然后我有它的头文件

configuration.h

namespace Eeprom
{
  class configuration 
  {
    public:
      static void initialize();
      static char* read();
      static void save(char* recvd_ssid, char* recvd_pass);
  };
}

编译时出现此错误:

sketch/configuration.cpp: In static member function 'static void Eeprom::configuration::save(char*, char*)':
configuration.cpp:19: error: request for member 'length' in 'rw_ssid', which is of non-class type 'char*'
     for (int i = 0; i < rw_ssid.length(); ++i) {
                                 ^
configuration.cpp:22: error: request for member 'length' in 'rw_pswd', which is of non-class type 'char*'
     for (int i = 0; i < rw_pswd.length(); ++i) {
                                 ^
configuration.cpp:34: error: 'WiFi' was not declared in this scope
     Serial.println(WiFi.localIP());
                    ^
sketch/configuration.cpp: In static member function 'static char* Eeprom::configuration::read()':
configuration.cpp:41: error: expected identifier before numeric constant
     char* read_ssid_pswd = [2];
                             ^
sketch/configuration.cpp: In lambda function:
configuration.cpp:41: error: expected '{' before ';' token
     char* read_ssid_pswd = [2];
                               ^
sketch/configuration.cpp: In static member function 'static char* Eeprom::configuration::read()':
configuration.cpp:41: error: cannot convert 'Eeprom::configuration::read()::__lambda0' to 'char*' in initialization
configuration.cpp:55: error: invalid conversion from 'char*' to 'char' [-fpermissive]
       read_ssid_pswd[0] = rw_ssid;
                         ^
configuration.cpp:56: error: invalid conversion from 'char*' to 'char' [-fpermissive]
       read_ssid_pswd[1] = rw_pswd;
                         ^
exit status 1
request for member 'length' in 'rw_ssid', which is of non-class type 'char*'

我是 cpp 新手,边做边学。

【问题讨论】:

    标签: c++ arrays function char arduino-c++


    【解决方案1】:

    char* 没有长度方法。要么你需要strlen(rw_ssid) 要么你应该使用 std::string

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多