ciao.
ho questa classe tuple:
.h
[code]
#pragma once
template<typename TYPE, int SIZE> class CVar
{
public:
CVar(void){};
~CVar(void){};
bool operator ==(const CVar& var)const;
bool operator != (const CVar& var)const;
void operator =(const CVar& var)const;
bool operator >(const CVar& var)const;
bool operator <(const CVar& var)const;
bool operator >=(const CVar& var)const;
bool operator <=(const CVar& var)const;
TYPE mVar[SIZE];
};
[code]
e cpp:
codice:
#include "StdAfx.h"
#include "Var.h"
//
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator== (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) == 0;
}
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator!= (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) != 0;
}
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator> (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) > 0;
}
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator< (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) < 0;
}
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator>= (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) >= 0;
}
template<typename TYPE, int SIZE>
bool CVar<TYPE, SIZE>::operator<= (const CVar&)const
{
return memcmp(mVar, CVar.mVar, SIZE*sizeof(TYPE)) <= 0;
}
template<typename TYPE, int SIZE>
void CVar<TYPE, SIZE>::operator= (const CVar&)const
{
memcpy((void*)mVar.mVar, (void*)CVar.mVar, SIZE*sizeof(TYPE));
}
eredito per creare un float4:
.h
codice:
#pragma once
#include "Var.h"
class Float4 : public CVar<float, 4>
{
public:
Float4(void);
Float4(float f1, float f2, float f3, float f4);
Float4 (const Float4& var);
void SetValue(float f1, float f2, float f3, float f4);
~Float4(void);
};
e
cpp
codice:
#include "StdAfx.h"
#include "Float4.h"
Float4::Float4(void)
{
}
Float4::Float4(float f1, float f2 ,float f3 , float f4)
{
mVar[0] = f1;
mVar[1] = f2;
mVar[2] = f3;
mVar[3] = f4;
}
Float4::Float4 (const Float4& var)
{
mVar[0] = var.mVar[0];
mVar[1] = var.mVar[1];
mVar[2] = var.mVar[2];
mVar[3] = var.mVar[3];
}
Float4::~Float4(void)
{
}
void Float4::SetValue(float f1, float f2, float f3, float f4)
{
mVar[0] = f1;
mVar[1] = f2;
mVar[2] = f3;
mVar[3] = f4;
}
se la compilo nel progetto in cui è una dll c++ non da nessun errore e cosi' se le includo in altre librerie statiche .lib o dll.
Il problema è che quando le inserisco in un progetto che è un applicazione win32 il linker mi da questi errori:
1>Linking...
1>Application.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification
1>WinApplication.obj : error LNK2019: unresolved external symbol "public: __thiscall Float4::~Float4(void)" (??1Float4@@QAE@XZ) referenced in function "public: __thiscall PGE::CWinApplication::CWinApplication(int,int,int, int,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class Float4)" (??0CWinApplication@PGE@@QAE@HHHHV?$basic_string@_ WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@VF loat4@@@Z)
1>WindowApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall Float4::~Float4(void)" (??1Float4@@QAE@XZ)
1>WinApplication.obj : error LNK2019: unresolved external symbol "public: __thiscall Float4::Float4(class Float4 const &)" (??0Float4@@QAE@ABV0@@Z) referenced in function "public: __thiscall PGE::CWinApplication::CWinApplication(int,int,int, int,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class Float4)" (??0CWinApplication@PGE@@QAE@HHHHV?$basic_string@_ WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@VF loat4@@@Z)
1>WindowApplication.obj : error LNK2001: unresolved external symbol "public: __thiscall Float4::Float4(class Float4 const &)" (??0Float4@@QAE@ABV0@@Z)
1>WinApplication.obj : error LNK2019: unresolved external symbol "public: __thiscall Float4::Float4(void)" (??0Float4@@QAE@XZ) referenced in function "public: __thiscall PGE::CWindowApplication::CWindowApplication(void)" (??0CWindowApplication@PGE@@QAE@XZ)
1>WindowApplication.obj : error LNK2019: unresolved external symbol _D3D11CreateDeviceAndSwapChain@48 referenced in function "public: long __thiscall PGE::CWindowApplication::InitDevice(void)" (?InitDevice@CWindowApplication@PGE@@QAEJXZ)
1>C:\PGN\trunk\PGE\Debug\PGEApplication.exe : fatal error LNK1120: 4 unresolved externals
1>Build log was saved at "file://c:\PGN\trunk\PGEApplication\Debug\BuildLog.htm"
1>PGEApplication - 7 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
premetto che ho cercato a lungo una soluzione.
grazie.
ps. devo trovare soluzione solo agli errori del linker per i float4 , gli altri errori li ho messi a posto.