提升 foreach 和运算符重载
我正在学习 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:非法使用该类型作为 表达方式
有什么办法可以解决这个问题吗?
I'm learning boost and I wanted to rewrite my Matrix class. Instead of for loops I wanted to use BOOST_FOREACH, however I have some problems with operator overloading.
This is the original version of overloading 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;
}
I wanted to change code above into something like this
template<typename T>
Matrix<T> Matrix<T>::operator /= ( double varValue)
{
BOOST_FOREACH(vector<T> row,datavector)
{
BOOST_FOREACH(T item,row)
{
item /= varValue;
}
}
}
However I constantly get an error
T: illegal use of this type as
expression
Is there any way to fix that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用参考(基于 http:// /www.boost.org/doc/libs/1_39_0/doc/html/foreach.html)。此外,您还缺少返回语句:
You need to use a reference (based on the example at http://www.boost.org/doc/libs/1_39_0/doc/html/foreach.html). Also, you were missing a return statement: