2013-06-20 75 views
-5

任何人都可以帮我解决带符号的无符号不匹配吗?它是关于如果my_size警告C4018:'>':有符号/无符号不匹配

void set::add(SET_ITEM_TYPE newItem) 
    // post: If newItem is not in this set, newItem is added 
    //  and the size of the set increased by +1. 

{ 
    if (positionOf(newItem) == -1) 
    { 

    if(my_size >= my_item.capacity()) 
    { 
    my_capacity = 2 * my_item.capacity(); 
    my_item.resize(my_capacity); 
    } 
    my_item[my_size] = newItem; 

    my_size++; 
    } 
} 
+0

错误(实际上很可能只是一个警告)是不言自明。 my_item.capacity()返回一个无符号类型,并将其与一个签名类型进行比较。 – ApplePie

+0

如果你想知道这里的问题是什么,我们需要知道类型是什么。即什么是my_size的类型,它们是什么类型的my_item.capacity。 – Joel

+0

你也想修正你的缩进。事实上,这里的整体格式非常可怕。 –

回答

3

假设my_size被定义为int,你可以通过改变它的类型unsigned int解决这个问题。大小不能是负值;为什么要签名?

std::vector::size等的回报无符号类型的一个原因)

+0

谢谢@ Magtheridon96 –