操作员超载增压UBLAS向量

Operator overloading Boost ublas Vector

本文关键字:UBLAS 向量 超载 操作员      更新时间:2023-10-16

有没有一种方法可以使C 中的Boost Vector的"/"运算符超载?

#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;
}

我看到的错误超载的"运算符/"必须是二进制操作员(具有1个参数)

您需要的是:

#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