Hola a todos yo por aca de nuevo
Esta vez con un proyecto en "MFC AppWizard (dll)"
el profesor no dios el ejercicio y hay que encontrar errores, luego de resolver el primero me tranque en el segundo error.
quisiera que le hechen un vistaso:
Complejo.cpp
StdAfx.cpp
Complejo.h
StdAfx.h
Al Compilar tengo 0 Errores, pero al Ejecutar me da esto:
Tengo rato buscando el error y no doy, segun veo en foros gringos que leo, que el problema es en las cabezeras pero nada no doy
Salu2
Esta vez con un proyecto en "MFC AppWizard (dll)"
el profesor no dios el ejercicio y hay que encontrar errores, luego de resolver el primero me tranque en el segundo error.
quisiera que le hechen un vistaso:
Complejo.cpp
Código (cpp) [Seleccionar]
//fichero main.cpp
#include "stdafx.h"
#include "complejo.h"
void main(void)
{
// declaración de números complejos
complejo c1(1.0, 1.0);
complejo c2(2.0, 2.0);
complejo c3;
c3.SetData(); //pide datos para c3
complejo c4(4.0);
// operadores aritméticos
complejo suma = c1.Suma(c2); //c1+c2
complejo resta = c1.Resta(c3); //c1-c3
complejo producto = c2.Multiplica(c4); //c2*c4
complejo cociente = c1.Cociente(c3); //c1/c3
cout << "Primer complejo: "; c1.Prt();
cout << "Segundo complejo: ";c2.Prt();
cout << "Tercer complejo: "; c3.Prt();
cout << "Suma: " ; suma.Prt();
cout << "Resta: " ; resta.Prt();
cout << "Producto: " ; producto.Prt();
cout << "Cociente: " ; cociente.Prt();
cout << "Ya he terminado." << endl;
}
StdAfx.cpp
Código (cpp) [Seleccionar]
// stdafx.cpp : source file that includes just the standard includes
// complejo.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#include "complejo.h"
Complejo.h
Código (cpp) [Seleccionar]
// fichero complejo.h
#include <iostream.h>
class complejo
{
private:
double real;
double imag;
public:
// Constructores
complejo(); //defecto
complejo(double, double im=0.0);
// SetThings
void SetData(void);
void SetReal(double);
void SetImag(double);
// GetThings
double GetReal(void){return real;}
double GetImag(void){return imag;}
//Operaciones
complejo Suma(complejo c);
complejo Resta(complejo c);
complejo Multiplica(complejo c);
complejo Cociente(complejo c);
//Salida
void Prt(){ cout << "("<< real <<","<< imag<<"i)"<<endl; }
};
complejo::complejo() // constructor por defecto
{
real = 0.0; imag = 0.0;
}
// constructor general
complejo::complejo(double re,double im)
{
real = re; imag = im;
}
// función miembro SetData()
void complejo::SetData(void)
{
cout << "Parte real: ";
cin >> real;
cout << "Parte imaginaria: ";
cin >> imag;
}
void complejo::SetReal(double re)
{
real = re;
}
void complejo::SetImag(double im)
{
imag = im;
}
complejo complejo::Suma(complejo c)
{
complejo cs;
cs.real = real + c.real;
cs.imag = imag + c.imag;
return cs;
}
complejo complejo::Resta(complejo c)
{
complejo cr;
//escribir el código para restar
cr.real = real - c.real;
cr.imag = imag - c.imag;
return cr;
}
complejo complejo::Multiplica(complejo c)
{
complejo cm;
//escribir el código (a,b) * (c,d) = (ac-bd, ad+bc)
cm.real = real * c.real;
cm.imag = imag * c.imag;
return cm;
}
complejo complejo::Cociente(complejo c)
{
complejo cc;
//escribir (a,b)/(c,d) = ((ac+bd)/(c^2+d^2) , (bc-ad)/(c^2 + d^2 ))
cc.real = real / c.real;
cc.imag = imag / c.imag;
return cc;
}
StdAfx.h
Código (cpp) [Seleccionar]
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__7C1B2F84_8EEA_4865_9808_AB1551CD54C1__INCLUDED_)
#define AFX_STDAFX_H__7C1B2F84_8EEA_4865_9808_AB1551CD54C1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxole.h> // MFC OLE classes
#include <afxodlgs.h> // MFC OLE dialog classes
#include <afxdisp.h> // MFC Automation classes
#endif // _AFX_NO_OLE_SUPPORT
#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes
#endif // _AFX_NO_DB_SUPPORT
#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes
#endif // _AFX_NO_DAO_SUPPORT
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__7C1B2F84_8EEA_4865_9808_AB1551CD54C1__INCLUDED_)
Al Compilar tengo 0 Errores, pero al Ejecutar me da esto:
Código [Seleccionar]
StdAfx.obj : error LNK2005: "public: __thiscall complejo::complejo(void)" (??0complejo@@QAE@XZ) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: __thiscall complejo::complejo(double,double)" (??0complejo@@QAE@NN@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: void __thiscall complejo::SetData(void)" (?SetData@complejo@@QAEXXZ) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: void __thiscall complejo::SetReal(double)" (?SetReal@complejo@@QAEXN@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: void __thiscall complejo::SetImag(double)" (?SetImag@complejo@@QAEXN@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: class complejo __thiscall complejo::Suma(class complejo)" (?Suma@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: class complejo __thiscall complejo::Resta(class complejo)" (?Resta@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: class complejo __thiscall complejo::Multiplica(class complejo)" (?Multiplica@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj
StdAfx.obj : error LNK2005: "public: class complejo __thiscall complejo::Cociente(class complejo)" (?Cociente@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj
StdAfx.obj : warning LNK4006: "public: __thiscall complejo::complejo(void)" (??0complejo@@QAE@XZ) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: __thiscall complejo::complejo(double,double)" (??0complejo@@QAE@NN@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: void __thiscall complejo::SetData(void)" (?SetData@complejo@@QAEXXZ) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: void __thiscall complejo::SetReal(double)" (?SetReal@complejo@@QAEXN@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: void __thiscall complejo::SetImag(double)" (?SetImag@complejo@@QAEXN@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: class complejo __thiscall complejo::Suma(class complejo)" (?Suma@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: class complejo __thiscall complejo::Resta(class complejo)" (?Resta@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: class complejo __thiscall complejo::Multiplica(class complejo)" (?Multiplica@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj; second definition ignored
StdAfx.obj : warning LNK4006: "public: class complejo __thiscall complejo::Cociente(class complejo)" (?Cociente@complejo@@QAE?AV1@V1@@Z) already defined in complejo.obj; second definition ignored
Creating library Debug/complejo.lib and object Debug/complejo.exp
Debug/complejo.dll : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Tengo rato buscando el error y no doy, segun veo en foros gringos que leo, que el problema es en las cabezeras pero nada no doy
Salu2