简体   繁体   English

运算符重载Boost ublas矢量

[英]Operator overloading Boost ublas Vector

Is there a way I can overload the "/" operator for a boost vector in C++? 有没有一种方法可以使C ++中的boost矢量重载“ /”运算符?

#include <boost/assign.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/operations.hpp>
#include <boost/numeric/ublas/assignment.hpp>

namespace ublas = boost::numeric::ublas;


using namespace boost::assign;

template <typename T, typename U>
ublas::vector<T> operator/(U& var)
{
// do something here
return *this;
}

I am seeing errors like Overloaded 'operator/' must be a binary operator (has 1 parameter) 我看到类似重载的'operator /'之类的错误必须是二进制运算符(具有1个参数)

What you need is this: 您需要的是:

#include <boost/assign.hpp>
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/operations.hpp>
#include <boost/numeric/ublas/assignment.hpp>

namespace ublas = boost::numeric::ublas;
using namespace boost::assign;

template <typename T, typename U>
ublas::vector<T> operator/(ublas::vector<T> v, U& var)
{
    // your logic for /
    return v;
}


int main()
{
    ublas::vector<int> v1;
    auto v2 = v1 / 2;
    return 0;
}

您拥有的运算符函数是一个独立函数,不是类的成员,因此它需要它应该处理的对象的两个参数,并且由于它不是类成员,因此也没有this

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM