Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hllsfn en 27 Enero 2017, 14:56 pm



Título: Duda a la hora de compilar cuanto utilizo objetos.
Publicado por: hllsfn en 27 Enero 2017, 14:56 pm
Buenas tardes.

Estoy intentando aprender a programar c++ solo con emacs y la shell pero tengo unas pequeñas duda acerca de como compilar cuando estoy usando objetos.
En concreto cuando los creo en dos partes( el header y el ¿cuerpo?). Aparte todavía no entiendo muy bien porque esta más correcto separado pero eso ya es otra historia.

Este es mi código

Persona.cpp
Código:
#include <iostream>
#include "Persona.h"

using namespace std;



persona::persona(){
  Nombre = "sinnombre";
  Edad = 0;
}

string persona::getNombre(){
  return Nombre;
}
void persona::setNombre(string nombre){
  Nombre = nombre;
}

int persona::getEdad(){
  return Edad;
}
void persona::setEdad(int edad){
  Edad = edad;
}

Persona.h
Código:
#include <iostream>

using namespace std;

class persona{

private:
  string Nombre;
  int Edad;

public:

  persona();

  string getNombre();
  void setNombre(string nombre);

  int getEdad();
  void setEdad(int edad);

};



Prueba.cpp
Código:
#include <iostream>
#include "Persona.h"

using namespace std;

int main(void){

  persona yo;

  cout << yo.getNombre() << endl;

 
  }



En teoria tendría que compilar los archivos Prueba.cpp y Persona.cpp , verdad?.

si tendría que cambiar la clase Prueba, tendría que volver a compilar las dos clases o solo la de prueba?

un proyecto grande tendría que compilar todos sus clases .cpp ?


Título: Re: Duda a la hora de compilar cuanto utilizo objetos.
Publicado por: engel lex en 27 Enero 2017, 15:02 pm
es preferible que uses Make para eso, tienes que compilar cada cosa en codigo objeto y luego hacer un ejecutable con ello

no se como es emacs y powershell
por lo menos en linux con g++

con un
Código:
    g++ -c myclass.cpp
    g++ -c main.cpp
    g++ myclass.o main.o
basta... no se si puedas hacer algo así

dos cosas de tu codigo

en el .h
Código:
 persona();

no es publico ni privado, va fuera de ellos al inicio

Código:
persona yo;

es
Código:
persona yo();

para iniciar el persona()