为什么我的值在进入for循环时会发生变化?

时间:2015-02-20 23:36:20

标签: c++ for-loop

    int findPair( const int col1, const Item value1, const int col2, const Item value2 ) {
        std::cout << value1 << std::endl; //displays '1'
        for( int i = 0; i < static_cast<int>( this->rows.size() ); i++ ) {
            std::cout << value1 << std::cout; //Changes into '10x5c09c8'
            if( this->rows[ i ]( col1 ) == value1 ) {
                if( this->rows[ i ]( col2 ) == value2 ) {
                    return i;
                }
            }
            if( this->rows[ i ]( col1 ) == value2 ) {
                if( this->rows[ i ]( col2 ) == value1 ) {
                    return i;
                }
            }
        }
        return -1;
    }

Item类基本上是一个自定义容器,里面有一个union。操作员(=<>,...)的所有常见疑问都已经过载,并为其创建了一个复制构造函数。所有这些都可以通过一系列单元测试。

当运行它时,第一个std::out按预期打印'1'(Item保持一个int)但是一旦它进入for循环,那么非常相同的值显示看起来像内存地址的东西。 这里有某种编译器错误,还是我错过了一些非常明显的东西?

我试过没有const,使用unsigned int而不是静态广播,将value1复制到新的Item然后检查它但无效。

以下是<<的{​​{1}}流运营商:

Item

感谢。

1 个答案:

答案 0 :(得分:5)

std::cout << value1 << std::cout; //Changes into '10x5c09c8'

打印1,然后打印对象std::cout的地址。你可能最后想要std::endl