以下是代码:
typedef struct Triplet
{
double value;
int row;
int column;
};
class Matrix
{
public:
//Some methods
double specialMethod(/*params*/);
private:
std::vector<Triplet> elements;
int nRows;
int nColumns;
};
在specialMethod
被调用后,Matrix.element中的值被破坏。但除了像这样迭代之外,没有任何事情可以做到:
std::vector<Triplet>::iterator it;
std::vector<Pair> buff;
for (it = this->elements.begin(); it != this->elements.end(); ++it)
{
if (it->column = n)
{
Pair p;
p.key = it->row;
p.value = it->value;
buff.push_back(p);
}
}
不知道从哪里开始寻找错误。
答案 0 :(得分:5)
if (it->column = n)
应该是:
if (it->column == n)
你正在进行比较而不是作业。
答案 1 :(得分:2)
如果可能的话,将n定义为const值,并在内部比较中反转顺序,如果指令 - 就像那样:if(n == it-&gt; column)。 编译器将帮助您找到类似的错误。
请注意,如果打开更高的警告级别,编译器会警告此类错误。