![](/img/trans.png)
[英]Operator overloading for a class containing boost::numeric::ublas::matrix
[英]Operator overloading Boost ublas Vector
有沒有一種方法可以使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;
}
我看到類似重載的'operator /'之類的錯誤必須是二進制運算符(具有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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.