Nullable Werte in C ++

Ich erstelle eine Datenbankzugriffsebene in nativem C ++ und suche nach Möglichkeiten, NULL-Werte zu unterstützen. Folgendes habe ich bisher:

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;
};

So muss ich Funktionen definieren:

void StoredProc(int i, CNullableT<int> j)
{
    ...connect to database
    ...if j.IsNull pass null to database etc
}

Und ich nenne es so:

sp.StoredProc(1, 2);

oder

sp.StoredProc(3, CNullValue::Null());

Ich habe mich nur gefragt, ob es einen besseren Weg gibt. Insbesondere mag ich das singletonartige Objekt von CNullValue mit der Statik nicht. Ich würde es vorziehen, einfach zu tun

sp.StoredProc(3, CNullValue);

oder etwas ähnliches. Wie lösen andere dieses Problem?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage