C/Visual C - problemas con la creación de objetos en c++

 
Vista:

problemas con la creación de objetos en c++

Publicado por Thyet (14 intervenciones) el 23/05/2002 03:34:36
Hola, estoy haciendo una aplicación en C++ bajo Linux. Bien, para resumir el problema que tengo en mi aplicación he llevado tal problema a una mini aplicación para entenderlo mejor. La cuestión es que si hago uso de dos clases, una de las cuales la vinculo con la otra por medio de la creación de una instancia, al hacer uso de esta instancia en la primera clase para llamar a una supuesta función de la segunda clase, linux me dice que no eso no es válido dándome el siguiente error: "undefined reference". La verdad? no veo razón alguna de ello. Para que ustedes vean a continuación les pego el simple código del que les hablo.

Cuatro ficheros : main.cpp y main.h, y, pipi.cpp y pipi.h. El main.h es el siguiente:

#include <stdio.h>
#include <stdlib.h>
#include "pipi.h"

class TMain
{
private:
int i;
TPipi* fPipi;
public:
TMain();
~TMain();
void Menu();
};

El main.cpp es este:
#include "main.h"

TMain::TMain()
{
i = 0;
fPipi = new TPipi();
}

void TMain::Menu()
{
i = fPipi->GetNumber();
printf("El numero es %d\n",i);
}

int
main(void)
{
TMain* M = new TMain();
M->Menu();
}

TMain::~TMain()
{
}
---------
El pipi.h es el siguiente:
#include <stdio.h>
#include <stdlib.h>

class TPipi
{
private:
int f;
public:
TPipi();
~TPipi();
int GetNumber();
};
----
Y finalmente el pipi.cpp es:
#include "pipi.h"

TPipi::TPipi()
{
f = 5;
}

int TPipi::GetNumber()
{
return(f);
}

TPipi::~TPipi()
{
}

El error según el propio compilador de Linux es el que les indico a continuación:
In function 'TMain::TMain(void)':
... undefined reference to 'TPipi::TPipi(void)'
In function 'TMain::Menu(void)':
... undefined reference to 'TPipi::GetNumber(void)'

Sinceramente yo no comprendo tal error, toda ayuda que me puedan dar se lo agradecería en el alma. Si me pudieran dar una solución cuanto antes mejor todavía.

Un saludo y gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Conseguido tíu...

Publicado por beosman (37 intervenciones) el 23/05/2002 13:21:57
Pues resulta que se lo dije a mi amigo Héctor y me ha dicho, y tiene toda
la razón, que el arvhivo principla no sabe donde están los demás .cpp, entonces
el linker no encuentra dichas funciones. Ya te lo contaré más detenidamente. El
caso es que la solución es la siguiente:

gcc -o main main.cpp pipi.cpp

En el caso de que tengamos un m.cpp donde sólo está la función main y en los
otros están los objetos la solución sería:

gcc -o m m.cpp main.cpp pipi.cpp

Esto no da problemas en BeOS porque hay un proyecto y se compilan todos los que
no lo están, lo mismo que ocurre cuando haces un archivo makefile y usas
el comando make para compilar.

Ale tío, a ver si consigues que funcione. Nos vemos.

Diego -> chairman
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Conseguido tíu...

Publicado por Thyet (14 intervenciones) el 23/05/2002 13:30:25
Qué tal chairmain? Jeje, en estos mismos momentos iba a responder al foro diciendo que ya me había enterado y...clavo, eso mismo es. Hoy he preguntado al coleguilla que te dije que controlaba C++ y me dijo lo mismo.

Aún así también agradecer a Chuidiang por su ayuda respondiéndome vía email ya que él me dijo lo mismo. Muchas gracias tio. No olvidar tampoco a Endos que también me ha respondido.

Gracias a todos por la rapidez de respuesta!

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar