相关疑难解决方法(0)

为什么你不能超载'.' C++中的运算符?

能够超载它是非常有用的.C++中的operator并返回对象的引用.

你可以超载operator->,operator*但不能operator.

这有技术原因吗?

c++ operator-overloading

76
推荐指数
3
解决办法
3万
查看次数

C++中的可空值

我正在使用本机C++创建数据库访问层,我正在寻找支持NULL值的方法.这是我到目前为止:

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;
};
Run Code Online (Sandbox Code Playgroud)

这就是我必须定义函数的方法:

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

我称之为:

sp.StoredProc(1, 2);
Run Code Online (Sandbox Code Playgroud)

要么

sp.StoredProc(3, CNullValue::Null());
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有比这更好的方法.特别是我不喜欢CNullValue的单例类对象和静态.我更愿意这样做

sp.StoredProc(3, …
Run Code Online (Sandbox Code Playgroud)

c++ nullable data-access-layer

30
推荐指数
3
解决办法
1万
查看次数