Tôi đang tạo một lớp truy cập cơ sở dữ liệu trong native C++, và tôi đang tìm cách để hỗ trợ các giá trị NULL. Dưới đây là những gì tôi có cho đến nay:Nullable giá trị trong 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;
};
Đây là cách tôi sẽ phải xác định các chức năng:
void StoredProc(int i, CNullableT<int> j)
{
...connect to database
...if j.IsNull pass null to database etc
}
Và tôi gọi nó là như thế này:
sp.StoredProc(1, 2);
hoặc
sp.StoredProc(3, CNullValue::Null());
Tôi đã tự hỏi liệu có tốt hơn không cách này hơn. Đặc biệt tôi không thích đối tượng giống như singleton của CNullValue với các số liệu thống kê. Tôi muốn chỉ làm
sp.StoredProc(3, CNullValue);
hoặc tương tự. Người khác giải quyết vấn đề này như thế nào?
Đặc biệt là xem xét nó tương đương với giá trị nhúng hiệu quả khôn ngoan vì chúng không sử dụng phân bổ đống. –
Cảm ơn bạn, hãy xem thư viện này ngay bây giờ ... – DanDan
Chỉ cần thử nghiệm nó. Nó là hoàn hảo. – DanDan