c++ - 如何使用C++中另一个命名空间中定义的操作

标签 c++ namespaces operator-keyword

我在命名空间中有一个操作的定义,我想在另一个命名空间中使用它,我该怎么做:

例如,假设我定义了以下操作:

namespace op
{
       inline cv::Matx21f operator/(const cv::Matx21f &v, float a)
    {
        return cv::Matx21f(v(0) / a, v(1) / a);
    }
}

我在另一个命名空间中有代码:

namespace code
   {
          void my function()
           {
              cv::Matx21f data=getData();
              cv::Matx21f result=data/10;
             }
   }

我在

上遇到错误
  cv::Matx21f result=data/10;

as/未定义。

我知道我可以使用:

  use namespace op;

但如果可能的话我不想这样做。

我可以通过任何方式解析类似于我们可以使用函数进行名称解析的操作(op::/无效)

最佳答案

您有三个选择。您可以直接引入运算符:

       void my function()
       {
          using op::operator/;
          cv::Matx21f data=getData();
          cv::Matx21f result=data/10;
       }

您可以直接调用它:

       cv::Matx21f result = op::operator/(data, 10);

但理想情况下,您只需将 operator/ 放入正确的命名空间即可:

namespace cv {
    inline Matx21f operator/(const Matx21f &v, float a);
}

这样,cv::Matx21f result=data/10; 就可以工作,因为可以找到运算符。

关于c++ - 如何使用C++中另一个命名空间中定义的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30075489/

相关文章:

c++ - 是否有用于从点语言字符串制作 png 的 C++ 函数?

css - CSS伪类可以命名空间吗?

java - 不带双引号的字符串追加

C++ 运算符歧义

javascript - 当条件肯定为真时,Javascript < 运算符返回 false 的问题

c++ - CUDA中数据数组和指向数据指针的共享内存的动态分配

C++运行时错误?如何解决这个问题并检查?

php - Laravel 启动函数不从命名空间内部调用

java - 如何让 Axis 1.4 不为同一个 XML namespace 生成多个前缀?

模板化类中 typedef 的 C++ 错误