c++ - 元多运算符重载

标签 c++ operator-overloading metaprogramming parameterization

问题是我是否可以找到一种方法来对运算符进行参数化重载,即代替

template <class T>
class A
{
   private:
       T m_var;
   public:
       operator T () const { return m_var; }
       const A operator+ ( const A& r_var ) const { return m_var + r_var; }
       const A operator- ( const A& r_var ) const { return m_var - r_var; }
       const A operator* ( const A& r_var ) const { return m_var * r_var; }
       const A operator/ ( const A& r_var ) const { return m_var / r_var; }
   ...........
}

有这样的东西

template <class T>
class A
{
   private:
       T m_var;
   public:
       operator T () const { return m_var; }
       const A operator 'X' ( const A& r_var ) const { return m_var 'X' r_var; }

   ...........
}

其中“X”将取值+、-、*、/,这样可以避免重复相同的模式代码。提前致谢。

最佳答案

查看 boost::operators .它需要 += 和 *= 由您定义。其余(+,-,*,/,-=,/=) 由库定义。它也适用于二元运算符。

关于c++ - 元多运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4844322/

相关文章:

c++ - 为什么我不能在 VS2008 的类中使用静态成员,例如静态结构?

c++ - 是否可以重载索引运算符 [] 以从整数返回位?

c++ - 如何在条件中展开可变参数模板?

ocaml - 基本类型驱动的 ppx 重写

c++ - lambda 函数中的捕获变量混淆

c++ - Monodevelop 在 Linux 上额外的 g++ 编译器选项

c++ - 运算符重载 = 和 const 引用

C++:重载运算符=

ruby - 使用 Ruby 中的简单包装类提高干燥度

c++ - 使用 C++ 在 Mac OS X 上编写 GUI 应用程序