Título: Problema con clases c++
Publicado por: themau1111 en 10 Noviembre 2013, 21:20 pm
tengo un proyecto en code blocks en el que tengo 5 cabeceras, cada una con clase en este caso sucursal, servicio,contrato,empleado y login pero en una de ellas me marca error
class servicios { public: int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; public: void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); }; (aqui sale el error)
I:\seminario de programacion\TELEMEX\includes\claseservicio.h|24|error: multiple types in one declaration|
espeor me puedan ayudar
Título: Re: Problema con clases
Publicado por: vangodp en 10 Noviembre 2013, 23:29 pm
Lo que dice ahí es que tienes muchos tipos en una declaracion. Y el error esta en el archivo claseservicio.h Puede que tengas includes dobles no se. Si tienes doble include o algo eso se arregla con #ifdef, #ifndef. Es una espacie de protección contra dobles include. Ejemplo: sabemos que para poder usar cout debemos incluir #include <iostream> al principio del archivo, pero si te fias al incluir un archivo .h al principio de main puedes juntarte con 2 #include <iostrem>
entonces lo que puedes hacer es poner en el .h la protección esta que no es mas que // En el archivo.h #ifndef //si no está definido #define // se define
//tu código aqui
#endif //fin de la protección
Bueno, no se si es por eso pero creo que puede ser. Si no que alguien nos ilumine mas nuestra ignorancia :laugh:
Dejo aquí un par de vídeos sobre eso que puede evitar mas de un dolor de cabeza: http://www.youtube.com/watch?v=rpZMdkdb4x4&list=PL860669912E26CE1C&index=22 (http://www.youtube.com/watch?v=rpZMdkdb4x4&list=PL860669912E26CE1C&index=22) http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1C (http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1C)
Título: Re: Problema con clases
Publicado por: themau1111 en 10 Noviembre 2013, 23:57 pm
Lo que dice ahí es que tienes muchos tipos en una declaracion. Y el error esta en el archivo claseservicio.h Puede que tengas includes dobles no se. Si tienes doble include o algo eso se arregla con #ifdef, #ifndef. Es una espacie de protección contra dobles include. Ejemplo: sabemos que para poder usar cout debemos incluir #include <iostream> al principio del archivo, pero si te fias al incluir un archivo .h al principio de main puedes juntarte con 2 #include <iostrem>
entonces lo que puedes hacer es poner en el .h la protección esta que no es mas que // En el archivo.h #ifndef //si no está definido #define // se define
//tu código aqui
#endif //fin de la protección
Bueno, no se si es por eso pero creo que puede ser. Si no que alguien nos ilumine mas nuestra ignorancia :laugh:
Dejo aquí un par de vídeos sobre eso que puede evitar mas de un dolor de cabeza: http://www.youtube.com/watch?v=rpZMdkdb4x4&list=PL860669912E26CE1C&index=22 (http://www.youtube.com/watch?v=rpZMdkdb4x4&list=PL860669912E26CE1C&index=22) http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1C (http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1C)
si , los tengo asi #ifndef CLASESERVICIO_H_INCLUDED #define CLASESERVICIO_H_INCLUDED #include <conio.h> #include <dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> class servicios { public: int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; public: void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); }; void servicios::constante() { system("cls"); printf("\n\n\n"); strcpy(servicio cod_servicio[0]=111; costo[0]=150.00; comision[0]=5; strcpy(servicio [1],"Cable total"); cod_servicio [1]=112; costo[1]=300.00; comision[1]=7; strcpy(servicio [2],"Cable total plus"); cod_servicio[2]=113; costo[2]=550.00; comision[2]=10; strcpy(servicio [3],"Internet y cable"); cod_servicio [3]=114; costo [3]=469.00; comision[3]=12; strcpy(servicio [4],"Internet y telefono"); cod_servicio [4]=115; costo [4]=500.00; comision[4]=12; strcpy(servicio [5],"Cable, telefono e internet"); cod_servicio [5]=116; costo [5]=635.00; comision[5]=15; } void servicios::mostrar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere buscar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio ==elem) { printf("\n\nNombre de servicio: %s\n", servicio); printf("Codigo de servicio: %d\n", cod_servicio); printf("Costo de servicio: %.2f\n\n", costo); printf("Comision de servicio: %i porciento\n\n", comision); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%i",& op2); }while(op2==1);
}
void servicios::capturar() { int c=6,d=6,e=6,f=6; int ac=0,op1; system("cls"); printf("\n"); do {
printf("\n\nIngrese nuevo servicio\n"); do{ gets(servicio[c]); }while(strcmp(servicio[c]," ")==0 || strcmp(servicio[c],"")==0); ac=cod_servicio[d-1]; cod_servicio[d]=ac+1; printf("Ingrese costo de servicio\n"); scanf("%f",& costo[e]); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[f]); printf("desea seguir ingresando datos si=1,no=2\n"); scanf("%i",& op1); c++; d++; e++; f++;
}while(op1==1); }
void servicios::buscar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere mostrar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio==elem) { printf("\n\nNombre de servicio: %s\n", servicio); printf("Codigo de servicio: %d\n", cod_servicio);
i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que busca!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2==1); }
void servicios::modificar() { printf("\n\n\n"); int i,elem,c1,op2,opz; do{ system("cls"); printf("Escriba el codigo de servicio que quiere modificar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio==elem) { do{ printf("\n\n¿Que datos quiere modificar\n"); printf("\n\n1-Nombre de servicio\n2-Costo de servicio\n3-Comision de servicio\n"); scanf("%i",&opz); }while(opz<1 || opz >3); switch (opz) { case 1: system ("cls"); printf("\n\nIngrese nuevo nombre de servicio\n"); do{ gets(servicio); }while(strcmp(servicio," ")==0 || strcmp(servicio,"")==0); break;
case 2: system ("cls"); printf("Ingrese costo de servicio\n"); scanf("%f",& costo); break; case 3: system ("cls"); printf("Ingrese comision de servicio\n"); scanf("%i",& comision); break; } c1=0; i=10; system("cls"); } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que quiere modificar!!!\n\n\n"); } i=0; do{ printf("desea seguir modificando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2<1 || op2>2); }while (op2==1); }
#endif // CLASESERVICIO_H_INCLUDED
Título: Re: Problema con clases c++
Publicado por: vangodp en 11 Noviembre 2013, 00:28 am
char servicio[10][50]; me da error con el strcpy(servicio,"Cable basico");
Usa el codebox o no te vamos a poder ayudar, el código tiene fallos y no logro entender que quieres :(
Título: Re: Problema con clases c++
Publicado por: themau1111 en 11 Noviembre 2013, 00:41 am
char servicio[10][50]; me da error con el strcpy(servicio,"Cable basico");
Usa el codebox o no te vamos a poder ayudar, el código tiene fallos y no logro entender que quieres :(
si uso code blocks, pero ami no me sale error ahi solo me sale el error k te mencionaba arriba error: multiple types in one declaration, en la llave k esta despues de las funciones
Título: Re: Problema con clases c++
Publicado por: vangodp en 11 Noviembre 2013, 00:51 am
no codeblocks digo que pongas el código aqui: #include <conio.h> #include <dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; class servicios{ public: servicios(){}; ~servicios(){}; int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); }; void servicios::constante() { system("cls"); printf("\n\n\n"); strcpy(servicio ,"Cable basico"); cod_servicio[0]=111; costo[0]=150.00; comision[0]=5; strcpy(servicio [1],"Cable total"); cod_servicio [1]=112; costo[1]=300.00; comision[1]=7; strcpy(servicio [2],"Cable total plus"); cod_servicio[2]=113; costo[2]=550.00; comision[2]=10; strcpy(servicio [3],"Internet y cable"); cod_servicio [3]=114; costo [3]=469.00; comision[3]=12; strcpy(servicio [4],"Internet y telefono"); cod_servicio [4]=115; costo [4]=500.00; comision[4]=12; strcpy(servicio [5],"Cable, telefono e internet"); cod_servicio [5]=116; costo [5]=635.00; comision[5]=15; } void servicios::mostrar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere buscar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio==elem) { printf("\n\nNombre de servicio: %s\n", servicio); printf("Codigo de servicio: %d\n", cod_servicio); printf("Costo de servicio: %.2f\n\n", costo); printf("Comision de servicio: %i porciento\n\n", comision); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%i",& op2); }while(op2==1); } void servicios::capturar() { int c=6,d=6,e=6,f=6; int ac=0,op1; system("cls"); printf("\n"); do { printf("\n\nIngrese nuevo servicio\n"); do{ gets(servicio[c]); }while(strcmp(servicio[c]," ")==0 || strcmp(servicio[c],"")==0); ac=cod_servicio[d-1]; cod_servicio[d]=ac+1; printf("Ingrese costo de servicio\n"); scanf("%f",& costo[e]); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[f]); printf("desea seguir ingresando datos si=1,no=2\n"); scanf("%i",& op1); c++; d++; e++; f++; }while(op1==1); } void servicios::buscar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere mostrar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio==elem) { printf("\n\nNombre de servicio: %s\n", servicio); printf("Codigo de servicio: %d\n", cod_servicio); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que busca!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2==1); } void servicios::modificar() { printf("\n\n\n"); int i,elem,c1,op2,opz; do{ system("cls"); printf("Escriba el codigo de servicio que quiere modificar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio==elem) { do{ printf("\n\n¿Que datos quiere modificar\n"); printf("\n\n1-Nombre de servicio\n2-Costo de servicio\n3-Comision de servicio\n"); scanf("%i",&opz); }while(opz<1 || opz >3); switch (opz) { case 1: system ("cls"); printf("\n\nIngrese nuevo nombre de servicio\n"); do{ gets(servicio); }while(strcmp(servicio," ")==0 || strcmp(servicio,"")==0); break; case 2: system ("cls"); printf("Ingrese costo de servicio\n"); scanf("%f",& costo); break; case 3: system ("cls"); printf("Ingrese comision de servicio\n"); scanf("%i",& comision); break; } c1=0; i=10; system("cls"); } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que quiere modificar!!!\n\n\n"); } i=0; do{ printf("desea seguir modificando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2<1 || op2>2); }while (op2==1); } int main () { return 0; }
que esta dando error el código que pegaste antes.
Título: Re: Problema con clases c++
Publicado por: themau1111 en 11 Noviembre 2013, 03:02 am
#ifndef CLASESERVICIO_H_INCLUDED #define CLASESERVICIO_H_INCLUDED #include <conio.h> #include <dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> class servicios { public: int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; public: void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); }; void servicios2::constante() { system("cls"); printf("\n\n\n"); strcpy(servicio [0],"Cable basico"); cod_servicio[0]=111; costo[0]=150.00; comision[0]=5; strcpy(servicio [1],"Cable total"); cod_servicio [1]=112; costo[1]=300.00; comision[1]=7; strcpy(servicio [2],"Cable total plus"); cod_servicio[2]=113; costo[2]=550.00; comision[2]=10; strcpy(servicio [3],"Internet y cable"); cod_servicio [3]=114; costo [3]=469.00; comision[3]=12; strcpy(servicio [4],"Internet y telefono"); cod_servicio [4]=115; costo [4]=500.00; comision[4]=12; strcpy(servicio [5],"Cable, telefono e internet"); cod_servicio [5]=116; costo [5]=635.00; comision[5]=15; } void servicios2::mostrar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere buscar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem) { printf("\n\nNombre de servicio: %s\n", servicio[i]); printf("Codigo de servicio: %d\n", cod_servicio[i]); printf("Costo de servicio: %.2f\n\n", costo[i]); printf("Comision de servicio: %i porciento\n\n", comision[i]); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%i",& op2); }while(op2==1); } void servicios2::capturar() { int c=6,d=6,e=6,f=6; int ac=0,op1; system("cls"); printf("\n"); do { printf("\n\nIngrese nuevo servicio\n"); do{ gets(servicio[c]); }while(strcmp(servicio[c]," ")==0 || strcmp(servicio[c],"")==0); ac=cod_servicio[d-1]; cod_servicio[d]=ac+1; printf("Ingrese costo de servicio\n"); scanf("%f",& costo[e]); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[f]); printf("desea seguir ingresando datos si=1,no=2\n"); scanf("%i",& op1); c++; d++; e++; f++; }while(op1==1); } void servicios2::buscar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere mostrar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem) { printf("\n\nNombre de servicio: %s\n", servicio[i]); printf("Codigo de servicio: %d\n", cod_servicio[i]); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que busca!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2==1); } void servicios2::modificar() { printf("\n\n\n"); int i,elem,c1,op2,opz; do{ system("cls"); printf("Escriba el codigo de servicio que quiere modificar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem) { do{ printf("\n\n¿Que datos quiere modificar\n"); printf("\n\n1-Nombre de servicio\n2-Costo de servicio\n3-Comision de servicio\n"); scanf("%i",&opz); }while(opz<1 || opz >3); switch (opz) { case 1: system ("cls"); printf("\n\nIngrese nuevo nombre de servicio\n"); do{ gets(servicio[i]); }while(strcmp(servicio[i]," ")==0 || strcmp(servicio[i],"")==0); break; case 2: system ("cls"); printf("Ingrese costo de servicio\n"); scanf("%f",& costo[i]); break; case 3: system ("cls"); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[i]); break; } c1=0; i=10; system("cls"); } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que quiere modificar!!!\n\n\n"); } i=0; do{ printf("desea seguir modificando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2<1 || op2>2); }while (op2==1); } #endif // CLASESERVICIO_H_INCLUDED
Título: Re: Problema con clases c++
Publicado por: xaps en 13 Noviembre 2013, 02:22 am
Mirándomelo así por encima, lo que he visto es que usas el tag "public" dos veces. No deberias usar "private" para la declaración de variables y "public" para la declaración de funciones? Es decir, envez de class servicios { public: int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; public: void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); };
deberia ser class servicios { private: int cod_servicio[10],comision [10]; float costo [10]; char servicio[10][50]; public: void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); };
Corregirme si me equivoco.
Título: Re: Problema con clases c++
Publicado por: vangodp en 13 Noviembre 2013, 15:30 pm
Tal como esta ahora si me funciona, ahora el funcionamiento interno es cosa tuya. Echa un ojo y dime si ves algo mas. :D //servicios.h #ifndef CLASESERVICIO_H_INCLUDED #define CLASESERVICIO_H_INCLUDED #include <conio.h> #include <dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> class service { private: int cod_servicio[10]; int comision [10]; float costo [10]; char servicio[10][50]; public: service (){} ~service (){} void constante(); void mostrar(); void capturar(); void buscar(); void modificar(); }; void service::constante() { system("cls"); printf("\n\n\n"); strcpy(servicio [0],"Cable basico"); cod_servicio[0]=111; costo[0]=150.00; comision[0]=5; strcpy(servicio [1],"Cable total"); cod_servicio [1]=112; costo[1]=300.00; comision[1]=7; strcpy(servicio [2],"Cable total plus"); cod_servicio[2]=113; costo[2]=550.00; comision[2]=10; strcpy(servicio [3],"Internet y cable"); cod_servicio [3]=114; costo [3]=469.00; comision[3]=12; strcpy(servicio [4],"Internet y telefono"); cod_servicio [4]=115; costo [4]=500.00; comision[4]=12; strcpy(servicio [5],"Cable, telefono e internet"); cod_servicio [5]=116; costo [5]=635.00; comision[5]=15; } void service::mostrar() { printf("\n\n\n"); int i,elem,c1,op2; do { system("cls"); printf("Escriba el codigo de servicio que quiere buscar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem) { printf("\n\nNombre de servicio: %s\n", servicio[i]); printf("Codigo de servicio: %d\n", cod_servicio[i]); printf("Costo de servicio: %.2f\n\n", costo[i]); printf("Comision de servicio: %i porciento\n\n", comision[i]); i=10; c1=0; } else { c1=1; } } if (c1==1) { printf("No se encuetra el elemento!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%i",&op2); }while(op2==1); } void service::capturar() { int c=6,d=6,e=6,f=6; int ac=0,op1; system("cls"); printf("\n"); do { printf("\n\nIngrese nuevo servicio\n"); do { gets(servicio[c]); }while(strcmp(servicio[c]," ")==0 || strcmp(servicio[c],"")==0); ac=cod_servicio[d-1]; // primer código es 5 cod_servicio[d]=ac+1; // printf("Ingrese costo de servicio\n"); scanf("%f",& costo[e]); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[f]); printf("desea seguir ingresando datos si=1,no=2\n"); scanf("%i",& op1); c++; d++; e++; f++; }while(op1==1); } void service::buscar() { printf("\n\n\n"); int i,elem,c1,op2; do{ system("cls"); printf("Escriba el codigo de servicio que quiere mostrar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem)// { printf("\n\nNombre de servicio: %s\n", servicio[i]); printf("Codigo de servicio: %d\n", cod_servicio[i]); i=10; c1=0; } else { c1=1; } } if(c1==1) { printf("No se encuetra el elemento que busca!!!\n\n\n"); } i=0; printf("desea seguir consultando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2==1); } void service::modificar() { printf("\n\n\n"); int i,elem,c1,op2,opz; do{ system("cls"); printf("Escriba el codigo de servicio que quiere modificar\n\n"); scanf("%d",& elem); for(i=0;i<=10;i++) { if (cod_servicio[i]==elem) { do { printf("\n\n¿Que datos quiere modificar\n"); printf("\n\n1-Nombre de servicio\n2-Costo de servicio\n3-Comision de servicio\n"); scanf("%i",&opz); }while(opz<1 || opz >3); switch (opz) { case 1: system ("cls"); printf("\n\nIngrese nuevo nombre de servicio\n"); do{ gets(servicio[i]); }while(strcmp(servicio[i]," ")==0 || strcmp(servicio[i],"")==0); break; case 2: system ("cls"); printf("Ingrese costo de servicio\n"); scanf("%f",& costo[i]); break; case 3: system ("cls"); printf("Ingrese comision de servicio\n"); scanf("%i",& comision[i]); break; } c1=0; i=10; system("cls"); } else { c1=1; } } if (c1==1) { printf("No se encuetra el elemento que quiere modificar!!!\n\n\n"); } i=0; do { printf("desea seguir modificando datos si=1,no=2\n"); scanf("%d",& op2); }while(op2<1 || op2>2); }while (op2==1); } #endif // CLASESERVICIO_H_INCLUDED
//main.cpp #include <iostream> using namespace std; #include "servicios.h" int main () { service serv1; //serv1.capturar(); //serv1.mostrar(); //serv1.buscar(); //serv1.constante(); //serv1.modificar(); return 0; }
Título: Re: Problema con clases c++
Publicado por: KaL3o en 14 Noviembre 2013, 05:26 am
a mi me surge la duda de ¿Porque no separas los metodos de la clase en un <nombre_clase>.cpp ???
|