buenas gente. estoy intentando hacer un programa. el devc me da este error:
no match for 'operator<' in '*((+(((unsigned int)n) * 12u)) + BotonA) < PLANTAS'
en esta condicion:
for(n=0;BotonA[n]<PLANTAS;n++)
alguien sabe ke siginifica?
gracias
buenas gente. estoy intentando hacer un programa. el devc me da este error:
no match for 'operator<' in '*((+(((unsigned int)n) * 12u)) + BotonA) < PLANTAS'
en esta condicion:
for(n=0;BotonA[n]<PLANTAS;n++)
alguien sabe ke siginifica?
gracias
como k si se muestra bien? es una tupla, definida como:
typedef struct stEstadoBoton {
int XBoton; //Posición X del boton
int YBoton; //Posición Y del boton
bool VBoton; //Llamada vigente (false no vigente, true vigente)
y el codigo completo es asi (me da el mismo error en cada for):
void mCtrlAscensor (stEstadoBoton BotonP[PLANTAS],
stEstadoBoton BotonA[PLANTAS],stEstadoBoton BotonB[PLANTAS],
int PlantaAct_A, int Sentido_A,
int PlantaAct_B, int Sentido_B,
int Destino[2])
{
int n;
for(n=0;BotonA[n]<PLANTAS;n++){
if(BotonA)Destino[0]=BotonA[n];
}
for(n=0;BotonB[n]<PLANTAS;n++){
if(BotonDestino[1]=BotonB[n];
}
}
Creo que es por un problema de tipos. ¿PLANTAS de qué tipo es? ¿ES una constante entera, una cadena, o qué?
Lo digo porque en BotonB[n]<PLANTAS estás viendo si una variable de tipo struct loquesea es menor que otra cosa que (seguramente) es de otro tipo...
Salu2
Vale, entonces es casi seguro lo de los tipos. NO sé qué quieres hacer exactamente pero lo que está a la izquierda del símbolo < tiene que ser algo numérico, no una estructura,
Salu2
PD: tb podría ser que te falta definir un nuevo operador '<' que te valga para comparar elementos de tipo struct loquesea con enteros. (Busca en Google sobrecarga de operadores en C++ -> http://www.chuidiang.com/clinux/sobrecarga/sobrecarga.php)
Es facil, LoC0 ya te lo ha dicho muy claro pero yo lo hare mas.
BotonA y BotonB no son 2 variables en las que puedas almacenar informacion, son estructuras. Las variables en las que si puedes guardar valores son las que forman la estructura: VBoton, XBoton y YBoton, si no me equivoco. El problema esta en que no usas ninguna de esas 3 para la comparacion.
el programa lo k ace es mirar los botones de un ascensor, para ver si estan pulsados o no, y a partir de ahi, si lo estan, el ascensor se desplazara. tonces como lo arreglariais?
No se q coño significa Xboton o Yboton, pero claramente no puedes comparar la estructura de los botones con las planaas.
en todo caso, BotonA.Xboton<PLANTAS o BotonA.Yboton<PLANTAS.
Es decir.
BotonA = Estructura
BotonA.XBoton = INT
BotonA.YBoton = INT
PLANTAS = INT
Estructura e INT no son comparables, de ahí el error. Solo puedes comparar las otras 3 entre ellas
Y presupongo q estás con C y no C++, por lo q olvídate lo q te dicen de sobrecarga de operadores, q en C no se puede hacer.
weno, he conseguido arreglar el asunto. la cosa está asi (tiene algun punto mas ke lo dicho):
void mCtrlAscensor (stEstadoBoton BotonP[PLANTAS],
stEstadoBoton BotonA[PLANTAS],stEstadoBoton BotonB[PLANTAS],
int PlantaAct_A, int Sentido_A,
int PlantaAct_B, int Sentido_B,
int Destino[2])
{
for(na=0;na<PLANTAS-1;na++){
if(BotonA[na].VBoton){
Destino[0]=na;
Sentido_A=0;
Destino[1]=PlantaAct_B;
PlantaAct_A=na;
}
}
for(nb=0;nb<PLANTAS-1;nb++){
if(BotonB[nb].VBoton){
Destino[1]=nb;
Sentido_B=0;
Destino[0]=PlantaAct_A;
PlantaAct_B=nb;
}
}
for(np=0;np<PLANTAS-1;np++){
if(BotonP[np].VBoton){
if(abs(np-PlantaAct_A)>abs(np-PlantaAct_){
Destino[1]=np;
Destino[0]=PlantaAct_A;
}
else{
Destino[0]=np;
Destino[1]=PlantaAct_B;
}
}
}
}
me faltan varias cosillas xo weno, de momentos los ascensores s me mueven. x cierto, alguien de aki sabe bastante de programacion en c++? es por si podria seguir ayudandome con este proyecto.
espero respuestas. gracias a todos!!
te recomiendo el borland c++
por cierto poco a poco tio no quieras que te salga todo a la primera.., el c es bonito pero te pues morir del asko si te atascas en algo
el borland xk?
no si ya tio, xo tnog poko tiempo, es el problema xDD. algun consejillo? (serio plis)
gente tengo otra duda. veamos, he de hacer una funcion la cual hace referencia a una estructura (la cual se encuentra en otro fichero adjunto al programa). la cuestion es que no encuentro bien su funcion. esta es la estructura:
typedef struct stDatosEstadisticas{
} ;
y la funcion ha realizar (una de ellas) es esta:
int mTrayectosAscensor(int Ascensor, stDatosEstadisticas Datos)
{
return 0;
}
alguien me podria orientar un poco plis?
Si necesitas hacer referencia a algo definido en otro fichero, tienes que usar la palabra clave extern
#21:
#include no es para hacer referencia a algo que está en otro archivo, #include es para meter todo el contenido de otro archivo.
#include y extern se usan para cosas totalmente diferentes.
Yo no sé que es lo quiere hacer, por que su post está fatal explicado, por eso le conteste "si lo que quieres hacer es...", pero como no ha vuelto a responder...
Le he dicho que use extern, por que para lo que le he entendido que quiera hacer, necesita extern, no #include.