Creo que en realidad solo necesitas una estructura:
struct objeto {
int numero;
char *cadenas[];
};
numero será la variable donde se almacena el total de cadenas que existen en el objeto.
cadenas seran las cadenas de dicho objeto, tantas como el número indique.
Ahora debes crear variables de esa estructura "objeto".
objeto var1 = { 2, {"ab", "bc"} };
objeto var2 = { 3, {"a", "bc", "abc"} };
objeto var3 = { 4, {"d", "de", "def", "defg"} };
Obviamente el primer número indica el número de cadenas y el resto son las cadenas propiamente dichas. Precaución al colocar las llaves puesto que dará error.
Por último, crea la función para imprimir los datos. Como sabemos el numero de
cadenas podemos hacer un recorrido por cada una de ellas para mostrarlas:
void print(objeto &o) {
Serial.println(o.numero);
for (char i=0; i<o.numero; i++) {
Serial.println(o.cadenas[i]);
}
}
Aunque personalmente optaria por crear una clase y añadir métodos y funciones para añadir datos y modificar datos.
Si aplicas esto no será necesario tener multiples archivos de cabecera y cpp.
Ejemplo:
struct objeto {
int numero;
char *cadenas[];
};
// Inicialización de los objetos.
objeto var1 = { 2, {"ab", "bc"} };
objeto var2 = { 3, {"a", "bc", "abc"} };
objeto var3 = { 4, {"d", "de", "def", "defg"} };
void print(objeto &o) {
Serial.println(o.numero);
for (char i=0; i<o.numero; i++) {
Serial.println(o.cadenas[i]);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
print(var1);
Serial.print("---");
print(var2);
Serial.print("---");
print(var3);
Serial.print("---");
delay(20000);
}