在一个类中创建对象

问题描述 投票:0回答:1

我有这个问题:

问题:

  • 我正在尝试创建一个用于管理和处理的库(ard33WiFi)几个其他库(例如WiFiServer库)
  • 我需要创建服务器对象,然后将其用于库(ard33WiFi)中的函数:

WiFiServer myServer(iPort);

  • 问题是,当我在类的成员中调用myServer时,会得到:

'myServer' was not declared in this scope

哪里/如何我声明myServer以便对整个类(ard33WiFi)可用吗?我已经抽出了一切,因为我所尝试的都是错误的。我在下面粘贴了框架代码。

// HEADER FILE (.h)
// ----------------------------------------------------------------------------------------------
#ifndef Ard33WiFi_h
#define Ard33WiFi_h

#include <WiFiNINA.h>
#include <WiFiUdp.h>

class ard33WiFi{
  public:
    ard33WiFi(int iPort)

    void someFunction();
    void serverBegin();

  private:
    int _iPort;

};
#endif

// ----------------------------------------------------------------------------------------------
// C++ FILE (.cpp)
// -----------------------------------------------------------------------------------------------
#include <Ard33Wifi.h>

ard33WiFi::ard33WiFi(int iPort){
  _iPort = iPort;
}
void ard33WiFi::someFunction(){
  // code here required to prepare the server for initializing
  // but ultimately not relevant to the question
}
void ard33WiFi::serverBegin(){
  myServer.begin();
  Serial.println("Server Online");
}

我在使用UDP库时遇到了同样的问题,因为我需要在各种函数中调用UDP对象来执行UDP操作。

任何帮助将不胜感激。

c++ class arduino libraries
1个回答
2
投票

我想您正在使用此:

https://www.arduino.cc/en/Reference/WiFiServer

我看到您没有在类中声明myServer;我猜这是您的代码中的错误。如果我没看错,应该是这样的:

#ifndef Ard33WiFi_h
#define Ard33WiFi_h

#include <WiFiNINA.h>
#include <WiFiUdp.h>
#include <WiFi.h>  // Not sure if you have to append this include

class ard33WiFi{
  public:
    ard33WiFi(int iPort)

    void someFunction();
    void serverBegin();

  private:
    int _iPort;
    WiFiServer myServer;

};
#endif

实现,您需要初始化实例:

#include <Ard33Wifi.h>

ard33WiFi::ard33WiFi(int iPort):myServer(iPort), _iPort(iPort) {
}

void ard33WiFi::someFunction(){
  // code here required to prepare the server for initializing
  // but ultimately not relevant to the question
}
void ard33WiFi::serverBegin(){
  myServer.begin();
  Serial.println("Server Online");
}

© www.soinside.com 2019 - 2024. All rights reserved.