为什么我的值在进入 for 循环时会发生变化?
Why does my value change when it goes into the 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;
}
项目 class 基本上是一个自定义容器,里面有一个联合体。所有常见的运算符 (=
、<
、>
、...) 都已重载并为其创建了一个复制构造函数。所有这些都有效,并且已经通过了一系列单元测试。
当这是 运行 时,第一个 std::out
按预期打印“1”(Item 包含一个 int)但是一旦它进入 for 循环,相同的值就会显示一些看起来像就像一个内存地址。
这里是否存在某种编译器错误,或者我是否遗漏了一些非常明显的东西?
我尝试过不使用 const
,使用 unsigned int
而不是静态转换,将 value1 复制到新的 Item
然后检查它但无济于事。
这是 Item
的 <<
流运算符:
friend std::ostream & operator<<( std::ostream &output, const Item item ) {
switch( item.itsType ) {
case dataType::NONE:
output << "NULL";
break;
case dataType::INTEGER:
output << item.item_INT;
break;
case dataType::DOUBLE:
output << item.item_DOUBLE;
break;
case dataType::STRING:
output << item.item_STRING;
break;
case dataType::BOOLEAN:
output << item.item_BOOL;
break;
default:
output << "ERROR!";
break;
}
return output;
}
谢谢。
std::cout << value1 << std::cout; //Changes into '10x5c09c8'
它打印 1
然后是对象的地址 std::cout
。你可能想要 std::endl
最后。
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;
}
项目 class 基本上是一个自定义容器,里面有一个联合体。所有常见的运算符 (=
、<
、>
、...) 都已重载并为其创建了一个复制构造函数。所有这些都有效,并且已经通过了一系列单元测试。
当这是 运行 时,第一个 std::out
按预期打印“1”(Item 包含一个 int)但是一旦它进入 for 循环,相同的值就会显示一些看起来像就像一个内存地址。
这里是否存在某种编译器错误,或者我是否遗漏了一些非常明显的东西?
我尝试过不使用 const
,使用 unsigned int
而不是静态转换,将 value1 复制到新的 Item
然后检查它但无济于事。
这是 Item
的 <<
流运算符:
friend std::ostream & operator<<( std::ostream &output, const Item item ) {
switch( item.itsType ) {
case dataType::NONE:
output << "NULL";
break;
case dataType::INTEGER:
output << item.item_INT;
break;
case dataType::DOUBLE:
output << item.item_DOUBLE;
break;
case dataType::STRING:
output << item.item_STRING;
break;
case dataType::BOOLEAN:
output << item.item_BOOL;
break;
default:
output << "ERROR!";
break;
}
return output;
}
谢谢。
std::cout << value1 << std::cout; //Changes into '10x5c09c8'
它打印 1
然后是对象的地址 std::cout
。你可能想要 std::endl
最后。