Estoy creando una capa de acceso a la base de datos en C++ nativo, y estoy buscando formas de admitir valores NULL. Aquí es lo que tengo hasta ahora:Valores anulables en 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;
};
Así es como voy a tener que definir funciones:
void StoredProc(int i, CNullableT<int> j)
{
...connect to database
...if j.IsNull pass null to database etc
}
Y llamarlo así:
sp.StoredProc(1, 2);
o
sp.StoredProc(3, CNullValue::Null());
Me preguntaba si había una mejor mucho más que esto. En particular, no me gusta el objeto tipo singleton de CNullValue con la estática. preferiría simplemente hacer
sp.StoredProc(3, CNullValue);
o algo similar. ¿Cómo otros resuelven este problema?
Especialmente si se considera que es equivalente al valor incrustado en cuanto al rendimiento, ya que no usan la asignación de montón. –
Gracias, mirando esta biblioteca ahora ... – DanDan
Acabo de probarlo. Es perfecto. – DanDan