0

有没有办法可以在 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;
}

我看到像 Overloaded 'operator/' must be a binary operator 之类的错误(有 1 个参数)

4

2 回答 2

2

你需要的是这样的:

#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;
}
于 2012-11-08T06:51:29.623 回答
1

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

于 2012-11-08T06:33:32.807 回答