1
我正在學習提升,我想重寫我的Matrix類。我想用BOOST_FOREACH來代替循環,但是我有一些操作符重載的問題。提升foreach和運算符超載
這是原始版本的重載operator/=
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'的副本更爲慣用。 – 2011-05-16 19:02:43