所以,我正在尝试将对添加到向量中,但它们必须成功通过2个条件:
具体必须在函数返回void类型时完成,但由于某种原因,这个逻辑似乎不起作用。有什么建议吗?
void add(KEY_T key, WEIGHT_T weight)
{
bool contains = false;
if (weight < 0)
{
std::cout << "ERROR, invalid weight" << std::endl; //Throw error.
}
for (int x = 0; x < _valueToWeightMap.size(); x++)
{
if (_valueToWeightMap[x].first == key)
{
contains = true;
}
}
if (weight > 0 && contains == false)
{
_valueToWeightMap.push_back(std::make_pair(key, weight));
}
}
这是主要的:
int main()
{
DiscreteDistribution<std::string> dist1;
dist1.add("Helmet", -1);
dist1.add("Gloves", 5);
dist1.add("Gloves", 5);
dist1.add("cloud", 8);
出于某种原因,当我尝试将Helmet添加为-1时,我没有收到错误。有什么建议吗?
答案 0 :(得分:1)
这一行:
std::cout << "ERROR, invalid weight" << std::endl; //Throw error.
不执行评论所说的内容(抛出错误)。这一行:
throw "ERROR, invalid weight"; //Throw error.
一样。但是,我 强烈 建议您只抛出从std::exception
派生的异常。这样:
throw std::range_error("ERROR, invalid weight"); //Throw error.
多更好。