pragma once y tropecientos LINKERROR
Publicado por Nelek (816 intervenciones) el 20/02/2007 15:11:19
Hola,
aqui debajo os pongo el header que me he creado para incluir en los demas *.cpp y demas. Resulta que si solo lo pongo en los *.cpp, me dice que no reconoce las declaraciones que contienen a las dos clases que especifico aqui. Y si meto el "include #GlobalDef.h" aunque sea en unico fichero header. Me saltan un monton (89) de errores como este:
error LNK2005: "public: virtual __thiscall CFuzzyRule::~CFuzzyRule(void)" (??1CFuzzyRule@@UAE@XZ)
O sea que tengo definiciones multiples, pero he puesto los #if !defined... y el #pragma once pero a pesar de todo sigue diciendo que tu tia... y segun lo que entendi yo por otros mensajes del foro, no deberia ser asi, si ya ha sido declarado, no deberia hacerlo de nuevo, asi que no tendria que darme estos mensajes de fallo, no? A no ser que tenga que poner las funciones miembros de las clases pequenyas en un *.cpp, que es lo unico que se me ocurre, pero entonces no me sirve de nada eso de hacer un header generico para que cada uno tome lo que le interesa de aqui y no tener que hacer 10 o 12 includes por clase que tengo en el espacio de trabajo.
// GlobalDef.h: //
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_)
#define AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
///////////////////////////////////////////////////////////
// Includes usados
///////////////////////////////////////////////////////////
//Includes de los DialogBoxes
//Include de las clases grandes derivadas de CObject que contienen metodos y a otras clases menores
//Includes de otros ficheros externos y templates
#include <math.h>
#include "MyColorComboBox.h"
#include "MyColorListBox.h"
#include "MyList.h"
///////////////////////////////////////////////////////////
//Constantes
///////////////////////////////////////////////////////////
#define MAXIN 24
//y todo el resto....
///////////////////////////////////////////////////////////
//CObject-derived classes de pequenyo tamanyo
///////////////////////////////////////////////////////////
class CRuleElement : public CObject
{
public:
CString m_szInName;
CString m_szAttName;
CRuleElement();
CRuleElement (const CRuleElement &re); //Copy operator
CRuleElement& operator= (const CRuleElement &re); //Assigment Operator
virtual ~CRuleElement();
};
CRuleElement::CRuleElement()
{ m_szInName = "";
m_szAttName = "";
}
CRuleElement::CRuleElement (const CRuleElement &re)
{ m_szInName = re.m_szInName;
m_szAttName = re.m_szAttName;
}
CRuleElement& CRuleElement::operator= (const CRuleElement &re)
{ m_szInName = re.m_szInName;
m_szAttName = re.m_szAttName;
return *this;
}
CRuleElement::~CRuleElement() { }
//*********************************************************
class CFuzzyRule : public CObject
{
public:
CMyList <CRuleElement, CRuleElement&> m_clRuleElements;
double m_dRuleGWF;
CFuzzyRule();
CFuzzyRule (const CFuzzyRule &fr); //Copy operator
CFuzzyRule& operator= (const CFuzzyRule &fr); //Assigment Operator
virtual ~CFuzzyRule();
};
CFuzzyRule::CFuzzyRule()
{ m_dRuleGWF = VALNULL;
m_clRuleElements.RemoveAll ();
}
CFuzzyRule::CFuzzyRule (const CFuzzyRule &fr)
{ m_dRuleGWF = fr.m_dRuleGWF;
m_clRuleElements = fr.m_clRuleElements;
}
CFuzzyRule& CFuzzyRule::operator= (const CFuzzyRule &fr)
{ m_dRuleGWF = fr.m_dRuleGWF;
m_clRuleElements = fr.m_clRuleElements;
return *this;
}
CFuzzyRule::~CFuzzyRule()
{ m_clRuleElements.RemoveAll (); }
///////////////////////////////////////////////////////////
//Miguel: Needed structs
///////////////////////////////////////////////////////////
typedef struct {
double m_dAttXValue;
bool m_bAttSelected;
} AttPointData;
typedef struct {
CString m_szFileName;
CString m_szDescription;
CString m_szDeparment;
CString m_szWorkerName;
CString m_szStartTime;
CString m_szLastTime;
} FileDescription;
typedef struct {
CString m_szInName;
CString m_szSelection;
} ComboContent;
#endif // !defined(AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_)
aqui debajo os pongo el header que me he creado para incluir en los demas *.cpp y demas. Resulta que si solo lo pongo en los *.cpp, me dice que no reconoce las declaraciones que contienen a las dos clases que especifico aqui. Y si meto el "include #GlobalDef.h" aunque sea en unico fichero header. Me saltan un monton (89) de errores como este:
error LNK2005: "public: virtual __thiscall CFuzzyRule::~CFuzzyRule(void)" (??1CFuzzyRule@@UAE@XZ)
O sea que tengo definiciones multiples, pero he puesto los #if !defined... y el #pragma once pero a pesar de todo sigue diciendo que tu tia... y segun lo que entendi yo por otros mensajes del foro, no deberia ser asi, si ya ha sido declarado, no deberia hacerlo de nuevo, asi que no tendria que darme estos mensajes de fallo, no? A no ser que tenga que poner las funciones miembros de las clases pequenyas en un *.cpp, que es lo unico que se me ocurre, pero entonces no me sirve de nada eso de hacer un header generico para que cada uno tome lo que le interesa de aqui y no tener que hacer 10 o 12 includes por clase que tengo en el espacio de trabajo.
// GlobalDef.h: //
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_)
#define AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
///////////////////////////////////////////////////////////
// Includes usados
///////////////////////////////////////////////////////////
//Includes de los DialogBoxes
//Include de las clases grandes derivadas de CObject que contienen metodos y a otras clases menores
//Includes de otros ficheros externos y templates
#include <math.h>
#include "MyColorComboBox.h"
#include "MyColorListBox.h"
#include "MyList.h"
///////////////////////////////////////////////////////////
//Constantes
///////////////////////////////////////////////////////////
#define MAXIN 24
//y todo el resto....
///////////////////////////////////////////////////////////
//CObject-derived classes de pequenyo tamanyo
///////////////////////////////////////////////////////////
class CRuleElement : public CObject
{
public:
CString m_szInName;
CString m_szAttName;
CRuleElement();
CRuleElement (const CRuleElement &re); //Copy operator
CRuleElement& operator= (const CRuleElement &re); //Assigment Operator
virtual ~CRuleElement();
};
CRuleElement::CRuleElement()
{ m_szInName = "";
m_szAttName = "";
}
CRuleElement::CRuleElement (const CRuleElement &re)
{ m_szInName = re.m_szInName;
m_szAttName = re.m_szAttName;
}
CRuleElement& CRuleElement::operator= (const CRuleElement &re)
{ m_szInName = re.m_szInName;
m_szAttName = re.m_szAttName;
return *this;
}
CRuleElement::~CRuleElement() { }
//*********************************************************
class CFuzzyRule : public CObject
{
public:
CMyList <CRuleElement, CRuleElement&> m_clRuleElements;
double m_dRuleGWF;
CFuzzyRule();
CFuzzyRule (const CFuzzyRule &fr); //Copy operator
CFuzzyRule& operator= (const CFuzzyRule &fr); //Assigment Operator
virtual ~CFuzzyRule();
};
CFuzzyRule::CFuzzyRule()
{ m_dRuleGWF = VALNULL;
m_clRuleElements.RemoveAll ();
}
CFuzzyRule::CFuzzyRule (const CFuzzyRule &fr)
{ m_dRuleGWF = fr.m_dRuleGWF;
m_clRuleElements = fr.m_clRuleElements;
}
CFuzzyRule& CFuzzyRule::operator= (const CFuzzyRule &fr)
{ m_dRuleGWF = fr.m_dRuleGWF;
m_clRuleElements = fr.m_clRuleElements;
return *this;
}
CFuzzyRule::~CFuzzyRule()
{ m_clRuleElements.RemoveAll (); }
///////////////////////////////////////////////////////////
//Miguel: Needed structs
///////////////////////////////////////////////////////////
typedef struct {
double m_dAttXValue;
bool m_bAttSelected;
} AttPointData;
typedef struct {
CString m_szFileName;
CString m_szDescription;
CString m_szDeparment;
CString m_szWorkerName;
CString m_szStartTime;
CString m_szLastTime;
} FileDescription;
typedef struct {
CString m_szInName;
CString m_szSelection;
} ComboContent;
#endif // !defined(AFX_GLOBALDEF_H__69B77F88_D9AC_4607_9135_297B9363533C__INCLUDED_)
Valora esta pregunta


0