Resultados 1 al 6 de 6

Tema: "namespace"

  1. #1

    Predeterminado "namespace"

    Amigos perdonen que a veces pida ayuda tan seguido, pero tengo un problema que estoy tratando de solucionar desde las 6 de la mañana y no doy con la respuesta por mas que busco en internet en ingles, español e italiano :s

    Mi programa iniciado lo coloque en mi ultimo post, pero abro este nuevo post porque mi ultimo post tenia que ver con otra cosa diferente y porque cada vez que intento iniciar desde el principio el programa, al compilar me da un error difernete.

    En este caso tengo siempre un programa compuesto por 2 files .cpp, uno contiene la main y el otro contiene el cuerpo de una clase, el 3er file es la clase.

    La cosa es que al momento de compilar me dice esto:

    expected constructor, destructor, or type conversion before "namespace"

    El error me marca directamente en:

    #include "Data.h" //que se encuentra en el cuerpo de la clase

    no se que hacer, en internet la mayoria de la gente que veo solo es problema en: "using namspace std;" u otra cosa.

    Tengo todos los files en una misma carpeta, e incluso intento colocarle la direccion al include, pero sigue sin funcionar

  2. #2
    Sin vida social Avatar de NeLo
    Ubicación
    Montserrat (València)
    Edad
    35
    Mensajes
    454

    Predeterminado Re: "namespace"

    ¿El include lo tienes en medio de una clase? La respuesta deberia ser no.

    ¿Qué hay en Data.h?
    Fractal Design Define Mini Black BeQuiet! Pure Power L8 CM 530W
    Asrock Z77 Extreme4-M Intel Core i7 3770
    G.Skill Ripjaws X 8GB CL8 CoolerMaster Hyper 212 EVO
    OCZ Vertex4 128GB Barracuda 7200.14 1TB SATA3

  3. #3

    Predeterminado Re: "namespace"

    en Data.h hay una clase, y en esa clase solo están declarados los miembros, las definiciones de las funciones miembro se encuentran en otros files, sin embargo ya he intentado incluir estos ficheros en el fichero de la clase y tampoco me funciona.

    Luego intente cerrando en Dev-c++ e intentando nuevamente, pero este vez el problema es el mismo que el del pos anterior, es decir que me da error de linker "undefined" Class::Class, en este caso Data:ata (int, int, int) que es el constructor.

    En el post anterior me dijeron que compilara todo con la cmd creando ficheros objetos y luego compilando todos unidos, sin embargo mi profesor en la universidad me dijo que esto no es necesario, y que debería funcionar incluso solo con incluir adecuadamente los ficheros.

  4. #4

    Predeterminado Re: "namespace"

    Cita Iniciado por john_maal Ver mensaje
    En el post anterior me dijeron que compilara todo con la cmd creando ficheros objetos y luego compilando todos unidos, sin embargo mi profesor en la universidad me dijo que esto no es necesario, y que debería funcionar incluso solo con incluir adecuadamente los ficheros.
    Salvo que incluyas no solamente las declaraciones, sino también el código que las implementa en el .h (algo que es una mala práctica), siempre tendrás que compilar todos los módulos que uses, y enlazarlos juntos.

    Por tanto lo que indica tu profesor no es correcto, el enlazado debe incluir el código necesario para generar el ejecutable, ya sean archivos objeto, o librerías.

  5. #5

    Predeterminado Re: "namespace"

    ok, a ver si entiendo, tengo 3 ficheros que forman el programa, el primero y principal es el main que usa la clase, el segundo es la clase y el tercero es el cuerpo de la clase.

    Ahora en el principal solo estoy usando:

    #include <iostream>
    #include "Data.h"

    en el archivo Data.h esta la clase, a la cual no he incluido nada, y es que en realidad cuando usaba el proyecto nunca tenia que definir nada aquí, salvo posiblemente algunas librerías porque a veces me daba problemas, pero incluso he probado incluir el cuerpo aquí que seria:

    #include "Data.cpp"

    Pero esto tampoco me ha funcionado.

    En el cuerpo de la clase esta incluida solamente la clase:

    #include "Data.h"

    A todo esto, cual seria el error?

    Por otra parte queria preguntar algo mas, ¿si yo declaro librerías standard como la iostream o stdlib en el fichero principal main, tengo tambien que incluirlas dentro de la clase si la clase las usa? ¿de ser asi, tendría también que incluirlas en los ficheros donde están los cuerpos de las clases?

  6. #6
    Sin vida social Avatar de NeLo
    Ubicación
    Montserrat (València)
    Edad
    35
    Mensajes
    454

    Predeterminado Re: "namespace"

    Al principio de Data.cpp pon #include "Data.h", y al principio de main.cpp pon #include <iostream> y #include "Data.h".

    Deberia funcionar, y si no, pon los archivos para ver que hay.

    Por otra parte queria preguntar algo mas, ¿si yo declaro librerías standard como la iostream o stdlib en el fichero principal main, tengo tambien que incluirlas dentro de la clase si la clase las usa? ¿de ser asi, tendría también que incluirlas en los ficheros donde están los cuerpos de las clases?
    Sí, en la declaración de la clase sí (h), pero en la definición no (cpp), porque ahí ya incluiras el clase.h que incluirá la libreria.
    Si en clase.h incluyo iostream y stdlib, en cualquier fichero que incluya clase.h, ya estoy incluyendo indirectamente todo lo que incluye clase.h.

    Saludos.
    Fractal Design Define Mini Black BeQuiet! Pure Power L8 CM 530W
    Asrock Z77 Extreme4-M Intel Core i7 3770
    G.Skill Ripjaws X 8GB CL8 CoolerMaster Hyper 212 EVO
    OCZ Vertex4 128GB Barracuda 7200.14 1TB SATA3

  7. #7

    Predeterminado Re: "namespace"

    Es exactamente de esa manera como he hecho mis archivos .cpp, pero no me funciona, sin embargo descubri algo interesante que he colocado en otro post, sin embargo lo coloco aqui.

    LA cuestion es que compilando usnado la ventana de cmd, quedaria algo asi:

    "c:\miniGW\bin\g++.exe" -c "main.cpp" -o "main.o"

    De este modo me funciona perfectamente, sin embargo si lo hago de este modo:

    "c:\miniGW\bin\g++.exe" -g "main.cpp" -o "main.o"

    Me da los mismos problemas, algo tiene que ver "-g", pero no se que cosa es

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •