Как вызвать конструктор класса после того, как он был вызван один раз?
У меня проблема с классами. У меня есть куча кода, этот код использует библиотеку Adafruit MQTT FONA. Я вызываю класс для создания нового экземпляра и подключения к указанному серверу с помощью этого кода;
Adafruit_MQTT_FONA mqtt(&fona, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
Когда я хочу подключиться к другому серверу, я вызываю конструктор этого экземпляра после его однократного вызова. Но это не позволяет мне построить его снова. Как я могу снова создать тот же экземпляр после того, как он был создан один раз?
void connectMqtt()
{
Adafruit_MQTT_FONA mqtt(&fona, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
}
connectMqtt();
Спасибо за помощь! Хорошего дня!
1 ответ
Вы не можете. Созданный объект остается созданным до тех пор, пока вы его не удалите.
Вы можете либо использовать динамическое размещение и new
и delete
для создания и уничтожения объектов по своему желанию, либо вы можете создать несколько объектов с разными настройками и использовать разные объекты в разных раз.
Другой вариант — изменить библиотеку, чтобы создать новую функцию, которая принимает и назначает новые настройки сервера. Все, что делает конструктор, — это сохраняет настройки в переменных. Нет причин, по которым вы не могли бы просто изменить эти переменные.
- Преобразование byte* в int в Arduino
- Увеличить частоту дискретизации на плате ESP32
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Как погасить светодиод за определенное время с помощью FastLED
- Невозможно настроить идентификатор клиента MQTT с помощью библиотеки Adafruit MQTT.
- Не удается успешно реализовать синглтон
- как перевести json в строку?
- Опубликовать чип в mqtt с помощью ESP32-CAM
примечание: ваш вопрос не об Arduino.... это вопрос по программированию на C++., @jsotola