my code its regular and i dont know if the code its correct, so i need some help.
here I leave the code and if you see any error comment, thanks.
the code is about logic door, i need to have a mother class and the sons class have to do the code that i have put.
the first parts its with 3 entry and the second part its with multidoor
#############################################
//Declaración de la clase Puerta
#ifndef _PUERTA_
#define _PUERTA_
#define ND (5) //Para el valor no determinado le asignamos un valor de 5
#include <string> //Para poder hacer strings
#include <sstream> //para poder hacer los ostringstream
class Puerta { //La clase puerta es la ulima del circuito, por lo que no
//va predecidida de ninguna otra
protected://Los miembros declarados después de aqui estaran protegidos
//solo los podrá ver esta clase
int _id; //inicializamos el identificador
public://Los miembros declarados después de aqui estaran protegidos
//y los podran ver todas las clases
Puerta();
virtual int salida() = 0; //inicializamos a 0 el valor de la salida
int getId();//inicializamos la obtencion del indentificador
virtual std::string toString ( int nivel = 0 ) = 0;
};
#endif
###################################
//Definición de la clase Puerta
#include "Puerta.hpp" //incluimos Puerta.hpp ya que va enlazada a
//Puerta.cpp
int _numPuerta = 1; //inicializamos _numpuerta a 1
//al identificador le damos el valor del numero de la puerta
//y le sumamos 3
Puerta::Puerta(){
_id = _numPuerta;
_numPuerta = _numPuerta + 3;
}
//Obtenemos el valor de puerta y devolvemos
int Puerta::getId(){
return _id;
}
#####################################
//Declaración de la clase Fijo
#ifndef _FIJO_
#define _FIJO_
#include "Puerta.hpp"//Fijo va conectado directamente a Puerta.hpp
//entonces lo incluimos
class Fijo : public Puerta{
protected:
int _salPta = ND; //declaramos como variable protegida que _salPta es
//igual a ND
public: //Todo lo que hemos declarado despues de aqui es publico
void pon1(); //declaramos void con el valor 1 para despues en la puerta
//and retornar ese valor como uno de las posiblidades
void pon0(); ////declaramos void con el valor 0 para despues en la puerta
//and retornar ese valor como uno de las posiblidades
int salida();
void Fijo::pon1(){
_salPta = 1; //Para el Pon1() devolvemos el valor de 1
}
void Fijo::pon0(){
_salPta = 0; //Para el Pon0() devolvemos el valor de 0
}
int Fijo::salida(){
return _salPta;
}
/*Aqui ajustamos para las conexiones que se conecten dejando 3 espa
* cios entre si, esto lo hacemos con la creacion de un valor entero
* el cual llamamos numEspacios que se encarga de multiplicar por 3
* el valor de nivel, el cual va aumentando gracias al contador que
* hemos hecho con nivel*/
std::ostream& operator<< (std::ostream& oss, Not &f);
#endif
################################
//Definición de la clase Not
#include "Not.hpp"
/*Aqui lo que hacemos es proponer todos los casos posibles que se nos
* pueden presentar al conectar la puerta not, que devuelva 1,0, ND
* y en caso de que devuelva 1 o 0 cambiar su valor por el contrario*/
void Not::conecta(Puerta *pt){
_ptaE = pt;
}
int Not::salida(){
if (_ptaE == nullptr){
return ND;
}
int sal = _ptaE->salida();
if(sal == ND){
return ND;
}
if(sal == 1){
return 0;
}
return 1;
}
/*Aqui lo que hacemos es como dijimos antes crear nivel para poder
* incrementar de 3 en 3 el valor de los identificadores, además de esto,
* consideraremos y mostraremos por pantalla los resultados tanto si está
* conectada como si no lo está, estudiando todos los casos posibles
* para ello */
/*Al ser una puerta and, solo nos podra devolver un valor de 1 si las 3
* entradas poseen el valor de 1, esto lo comprobaremos con el &&, si no
* ocurre esto, devolveremos un 0, también comprobaremos los casos en los
* que se nos devuelve ND*/
/*Aqui lo que hacemos es como dijimos antes crear nivel para poder
* incrementar de 3 en 3 el valor de los identificadores, además de esto,
* consideraremos y mostraremos por pantalla los resultados tanto si está
* conectada como si no lo está, estudiando todos los casos posibles
* para ello */
I see one potential problem. Class Not contains a raw pointer (_ptaE). Who owns that pointer (meaning who is responsible for deleting it? Figure this out and document it in the conecta() method. If Not owns the pointer then you'll need to create assignment operators and copy constructors, or explicitly disallow them.