POO : crear un coleccion que almacene objetos

hola, estoy tratando de crear una lista de objetos, para pasar un bucle y encender la bombilla que necesito,pero no puedo, me sale error en el tipo de dato, uso una lista de tipo object.
:o :o
:confused: :confused:

Tengo dos clases. Una me crea objetos de acuerdo al tipo(servomotor, led,ultrasonico,fotoresistencia) y tiene metodos para encender y apagar las funciones de acuerdo al tipo. En la otra intento crear un lista de objetos de la primera clase, pasa un mensaje desde un modulo bluetooth para activar que objeto de la primera clase se active o apague. Esa es la idea, pero no puedo crear la coleccion de objetos de la primera clase.

alguien podria mostrarme un ejemplo para crear una coleccion de objetos,o,podrian confirmarme si se puede. Saludos, desde la Universidad Nacional de Colombia.

muchas gracias, ya estoy desesperado en un tema tan simple, no saber la sintaxis.

adjunto codigos

primera clase:

#include "Tipo.h"
#include "Arduino.h"

//constructor

//FotoResistencia
Tipo::Tipo(byte pin_e, bool exterior_e){
this->pin=pin_e;
this->estado=false;
this->tipo="f";
this->exterior=exterior_e;
pinMode(this->pin,INPUT);
}
//UltraSonico
Tipo::Tipo(byte pin_e, byte echo_e){
this->echo=echo_e;
this->pin=pin_e;
this->estado=false;
this->tipo="u";
pinMode(this->pin,OUTPUT);
pinMode(this->echo,INPUT);
}
//Bombilla-servo
Tipo::Tipo(char tipo_e, byte pin_e, bool exterior_e){
this->tipo=tipo_e;
this->pin=pin_e;
this->exterior=exterior_e;
this->estado=false;
pinMode(this->pin,OUTPUT);
if (tipo=="s"){attach(pin);}
}

//setters
void Tipo::setexterior(){exterior=!(exterior);}
void Tipo::setestado(){exterior=!(exterior);}
void Tipo::settipo(char x){tipo=x;}
void Tipo::setecho(byte x){echo=x;}
void Tipo::setpin(byte x){pin=x;}

//getters
bool Tipo::getexterior(){return exterior;}
bool Tipo::getestado(){return exterior;}
char Tipo::gettipo(){return tipo;}
byte Tipo::getecho(){return echo;}
byte Tipo::getpin(){return pin;}

void Tipo::encender(){
if (gettipo()=="f"){
if (!(getestado())){setestado();}
}else if (gettipo()=="s"){
write(90);
if (!(getestado())){setestado();}
}else{
digitalWrite(getpin(),HIGH);
if (!(getestado())){setestado();}
}
}
void Tipo::apagar(){
if (gettipo()=="f"){
if (getestado()){setestado();}
}else if (gettipo()=="s"){
write(0);
if (getestado()){setestado();}
}else{
digitalWrite(getpin(),LOW);
if (getestado()){setestado();}
}
}

void Tipo::cambiar(){
if (getestado()){apagar();}
else {encender();}
}

segunda clase:

#include "CasaD.h"

#include "Arduino.h"
#include <Tipo.h>

CasaD::CasaD(byte tamano_){
this->tamano=tamano_;
arreglo = new Tipo*[tamano];
}

//setters
void CasaD::settamano(byte x){tamano=x;}
//getters
byte CasaD::gettamano(){return tamano;}

//metodos de array
void CasaD::agregar(Tipo *nuevo){}
void CasaD::borrar(Tipo *nuevo){}

//metodos de Tipo

void CasaD::encender_apagar_todos(char tipo,char accion){
if (accion=="e"){
for (int i=0;i<gettamano();i++){
if (arreglo_.gettipo() == tipo){arreglo*.encender();}_
_
}_
_
}else{_
_
for (int i=0;i<gettamano();i++){_
if (arreglo_.gettipo() == tipo){arreglo.apagar();}
}
}
}
void CasaD::descifrar(String mensaje){
if (mensaje.charAt(0) == "t"){_

encender_apagar_todos( mensaje.charAt(1), mensaje.charAt(2));
_ }else {
for (int i=0;i<gettamano();i++){
if (arreglo.getpin() == mensaje.toInt()){arreglo.cambiar();break;}
}
}
} *_

* void CasaD::noche(){*
* for (int i=0;i<gettamano();i++){*
if (arreglo_.gettipo() == "f" && arreglo*.getexterior()){
if (arreglo.getestado() && analogRead(arreglo.getpin())<20){
for (int j=0;j<gettamano();j++){
if (arreglo[j].gettipo=="b" && arreglo[j].getexterior()){arreglo[j].encender();}
}
}
break;
}
}
}*_

* void CasaD::proximidad(byte pin){}*

Moderador
Te invito cordialmente a que leas las normas del foro, en ellas verás que los códigos se postean de otro modo. Usando etiquetas asi que por favor edita tu post.

Lee las Normas del foro