我在命名空间中有一个操作的定义,我想在另一个命名空间中使用它,我该怎么做:
例如,假设我定义了以下操作:
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/