【发布时间】:2011-05-16 18:29:45
【问题描述】:
我正在学习 boost,我想重写我的 Matrix 课程。我想使用 BOOST_FOREACH 而不是 for 循环,但是我在运算符重载方面遇到了一些问题。
这是重载运算符/=的原始版本
template<typename T>
Matrix<T> Matrix<T>::operator /= ( double varValue)
{
for (int i=0;i<this->rows;i++)
{
for (int j=0;j<this->columns;j++)
{
datavector.at(i).at(j) /= varValue;
}
}
return *this;
}
我想把上面的代码改成这样的
template<typename T>
Matrix<T> Matrix<T>::operator /= ( double varValue)
{
BOOST_FOREACH(vector<T> row,datavector)
{
BOOST_FOREACH(T item,row)
{
item /= varValue;
}
}
}
但是我经常遇到错误
T: 非法使用这种类型作为 表达
有什么办法可以解决吗?
【问题讨论】:
-
运算符的赋值形式返回引用更为惯用,而您返回的是
*this的副本。
标签: c++ boost operators operator-overloading