我是 C++ 的初学者。所以请多多包涵:
我尝试为应该将值发布到 API 的温度传感器编写代码。
我无法实例化我的课程ApiClient
。我总是收到这些错误:
- IDE:在没有适当的 operator() 或将函数转换为指针函数类型的情况下调用类类型的对象
- IDE:没有重载函数“ApiClient::ApiClient”的实例与指定的类型匹配
- 编译器:不匹配调用 '(ApiClient) (String&)'
我的代码看起来像这样(为了便于阅读,稍微精简了一些):
主文件
#include <ApiClient.h>
ApiClient api;
void setup()
{
Serial.begin(115200);
String apiUrl = "https://myapi.com/api";
api(apiUrl); // ERROR: raises call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type
}
void loop()
{
String temp = "49";
api.sendValue("temperature", temp);
}
ApiClient.h
#ifndef WebClient_h
#define WebClient_h
#include <Arduino.h>
#include <WiFi.h>
#include <esp_wps.h>
#include <HTTPClient.h>
class ApiClient
{
public:
ApiClient(); // this is only added for testing
ApiClient(String apiUrl); // it should always instanciate with url
void sendValue(String key, String value);
String _apiUrl;
private:
};
#endif
ApiClient.cpp
#include <ApiClient.h>
String _apiUrl;
HTTPClient http;
ApiClient::ApiClient(String apiUrl) // IDE says: "no instance of overloaded function "ApiClient::ApiClient" matches the specified type"
{
this->_apiUrl = apiUrl;
// some stuff to establish a connection
}