Autor
|
Tema: Problema con clases c++ (Leído 2,442 veces)
|
themau1111
Desconectado
Mensajes: 4
|
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
|
|
« Última modificación: 10 Noviembre 2013, 23:20 pm por themau1111 »
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
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 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=22http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1C
|
|
« Última modificación: 10 Noviembre 2013, 23:33 pm por vangodp »
|
En línea
|
|
|
|
themau1111
Desconectado
Mensajes: 4
|
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 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=22http://www.youtube.com/watch?v=N3yLYgUR-UI&list=PL860669912E26CE1Csi , 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
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
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
|
|
|
En línea
|
|
|
|
themau1111
Desconectado
Mensajes: 4
|
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
|
|
|
En línea
|
|
|
|
vangodp
Desconectado
Mensajes: 455
|
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.
|
|
|
En línea
|
|
|
|
themau1111
Desconectado
Mensajes: 4
|
#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
|
|
|
En línea
|
|
|
|
xaps
Desconectado
Mensajes: 157
|
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.
|
|
|
En línea
|
"The programmers of tomorrow are the wizards of the future" - Gave Newel
|
|
|
vangodp
Desconectado
Mensajes: 455
|
Tal como esta ahora si me funciona, ahora el funcionamiento interno es cosa tuya. Echa un ojo y dime si ves algo mas. //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; }
|
|
|
En línea
|
|
|
|
KaL3o
Desconectado
Mensajes: 60
|
a mi me surge la duda de ¿Porque no separas los metodos de la clase en un <nombre_clase>.cpp ???
|
|
|
En línea
|
Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con las clases en c#
.NET (C#, VB.NET, ASP)
|
The Jackal
|
2
|
2,590
|
18 Noviembre 2007, 13:10 pm
por The Jackal
|
|
|
Problema con clases
Java
|
Debci
|
3
|
2,570
|
9 Julio 2009, 20:53 pm
por Amerikano|Cls
|
|
|
Problema con Clases
.NET (C#, VB.NET, ASP)
|
Dreamcacher
|
1
|
2,052
|
5 Octubre 2011, 20:51 pm
por Keyen Night
|
|
|
problema con clases php
PHP
|
Zeroql
|
8
|
3,844
|
13 Noviembre 2011, 20:08 pm
por Zeroql
|
|
|
Problema con clases
Java
|
Lain0x
|
5
|
3,530
|
24 Noviembre 2011, 16:51 pm
por Lain0x
|
|