Sto creando un livello di accesso al database in C++ nativo e sto cercando modi per supportare valori NULL. Ecco quello che ho finora:Valori Nullable in C++
class CNullValue
{
public:
static CNullValue Null()
{
static CNullValue nv;
return nv;
}
};
template<class T>
class CNullableT
{
public:
CNullableT(CNullValue &v) : m_Value(T()), m_IsNull(true)
{
}
CNullableT(T value) : m_Value(value), m_IsNull(false)
{
}
bool IsNull()
{
return m_IsNull;
}
T GetValue()
{
return m_Value;
}
private:
T m_Value;
bool m_IsNull;
};
questo è come mi dovrò definire funzioni:
void StoredProc(int i, CNullableT<int> j)
{
...connect to database
...if j.IsNull pass null to database etc
}
E mi chiamare in questo modo:
sp.StoredProc(1, 2);
o
sp.StoredProc(3, CNullValue::Null());
Mi stavo chiedendo se ci fosse un migliore modo di questo. In particolare, non mi piace l'oggetto simile a un singleton di CNullValue con la statica. Preferirei fare proprio
sp.StoredProc(3, CNullValue);
o qualcosa di simile. Come fanno gli altri a risolvere questo problema?
Soprattutto se si considera che è equivalente al valore intrinseco delle prestazioni poiché non utilizzano l'allocazione dell'heap. –
Grazie, esaminando questa libreria ora ... – DanDan
Appena testato. È perfetto. – DanDan