gpt4 book ai didi

c++ - boost foreach 和运算符重载

转载 作者:行者123 更新时间:2023-11-30 03:07:07 25 4
gpt4 key购买 nike

我正在学习 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: illegal use of this type as expression

有什么办法可以解决吗?

最佳答案

您需要使用引用(基于 http://www.boost.org/doc/libs/1_39_0/doc/html/foreach.html 中的示例)。此外,您还缺少返回语句:

template<typename T>
Matrix<T> Matrix<T>::operator /= ( double varValue)
{
BOOST_FOREACH(vector<T> &row,datavector)
{
BOOST_FOREACH(T &item,row)
{
item /= varValue;
}
}
return *this;
}

关于c++ - boost foreach 和运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6021710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com