cannot call member function 'void Funcs::Connect::connectWifi()' without object

I am trying to make my sketch modular ,
So I set this up:

// connection.h

namespace Funcs
{
  class Connect 
  {
    public:
      void connectWifi();
  };
}

then I created :

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include "connection.h"
const char* ssid     = "ssid";
const char* password = "password";
namespace Funcs
{
  void connectWifi() {
    // Connect to WiFi network
    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);
  
    WiFi.begin(ssid, password);
  
    while (WiFi.status() != WL_CONNECTED) {
      delay(10);
      Serial.print(".");
    }
    Serial.println("");
    Serial.print("WiFi connected with ip ");
    Serial.println(WiFi.localIP());
  
  }
  }

and then the main sketch ino file.

#include "connection.h"
#include <ESP8266WiFi.h>
#include <ESP8266Ping.h>
#include <ESP8266WebServer.h>
#include <ArduinoJson.h>
#define HTTP_REST_PORT 80
void setup() {
  Serial.begin(115200);
  ads.setGain(GAIN_TWOTHIRDS);
  ads.begin();
  Funcs::Connect::connectWifi();
}

void loop (){
}

But this throws error when compiling:

   Funcs::Connect::connectWifi();
                               ^
exit status 1
cannot call member function 'void Funcs::Connect::connectWifi()' without object

I know I have done the same way in past but why is it not working with arduino ?

connectWifi needs to be static. Then you can call it without needing an object of type Connect.

1 Like

wildbill:
connectWifi needs to be static. Then you can call it without needing an object of type Connect.

Now I am getting this error:

~/Arduino/wemos/soil_sensor_with_ads/soil_sensor_with_ads.ino:14: undefined reference to `Funcs::Connect::connectWifi()'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board WeMos D1 R1.

but line 14 is not `Funcs::Connect::connectWifi()' it is on line 18.
Can u please show me an example ?

Post your current code. What board are you compiling for?

Solved it !
in my connection.cpp I added connection file name before function.

namespace Funcs
{

   void connection::connectWifi() {

Please post your working code.