小编Hen*_*und的帖子

我可以防止将参数隐式转换为赋值运算符

我正在实现一个类型(TParameter),该类型必须是布尔值(以指示该值是否有效)和任意类型的数据值。

想法是,如果方法采用某种类型的参数,则可以将其设置为false,以指示该值无效。

像这样:

someVariable = 123;   // use the value 123
someVariable = false; // mark variable as invalid/to-be-ignored
Run Code Online (Sandbox Code Playgroud)

我的代码的简化版本:

template <class T>

class TParameter
{
  public:
    TParameter()
    : m_value(),
      m_valid(false)
    {}

    // assignment operators
    TParameter& operator= (const T& value)
    {
      m_value = value;
      m_valid = true;
      return *this;
    }

    TParameter& operator= (bool valid)
    {
      m_valid = valid;
      return *this;
    }

  private:
    T m_value;
    bool m_valid;
};

  void test()
  {
    TParameter<int16_t> param;

    param = false;
    param …
Run Code Online (Sandbox Code Playgroud)

c++ templates implicit-conversion

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

标签 统计

c++ ×1

implicit-conversion ×1

templates ×1