C++ erzeugt für jede class/struct automatisch einen spezialisierten Zuweisungsoperator.
Meist wird er weg optimiert, aber man darf ihn auch nutzen.
#include <Streaming.h> // die Lib findest du selber ;-)
Print &cout = Serial; // cout Emulation für "Arme"
class Test
{
private:
int value {0};
char str[20] {"none"};
public:
Test() = default;
Test(int v,const char* str):value(v)
{
if(strlen(str) < sizeof this->str) strcpy(this->str,str);
}
int getValue()
{
return value;
}
char* getStr()
{
return str;
}
};
Test sqlAbfrage()
{
return {4711,"Trööt"};
}
Test test;
void setup()
{
Serial.begin(9600);
cout << F("Start: ") << F(__FILE__) << endl;
cout << test.getValue() << " " << test.getStr() << endl;
test = sqlAbfrage();
cout << test.getValue() << " " << test.getStr() << endl;
}
void loop()
{
}
--> Code überarbeitet
Nachtrag:
Man muss unter allen Umständen gewähr leisten, dass ein char* auch wirklich auf einen C-String zeigt. Sonst landet man im Undefined Behavior