Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回垃圾值C++_C++ - Fatal编程技术网

返回垃圾值C++

返回垃圾值C++,c++,C++,我有一个方法,假设在树中找不到项时返回一个垃圾值。我得到的只是一个运行时异常:垃圾在未定义的情况下被使用 ItemType BstClass::rRetrieve(node* trav, KeyType key, bool& inTree) { if(trav == NULL) { inTree = false; ItemType garbage; return garbage - 1; } if(trav-

我有一个方法,假设在树中找不到项时返回一个垃圾值。我得到的只是一个运行时异常:垃圾在未定义的情况下被使用

ItemType BstClass::rRetrieve(node* trav, KeyType key, bool& inTree)
{
    if(trav == NULL)
    {
        inTree = false;
        ItemType garbage;
        return garbage - 1;
    }
    if(trav->data.key == key)
    { 
        inTree = true;
        return trav->data; 
    }
    else if (key < trav->data.key) 
        return(rRetrieve(trav->left, key, inTree)); 
    else
        return(rRetrieve(trav->right, key, inTree)); 
}// end rRetrieve

如果没有更多信息,这只是猜测,但是:

ItemType garbage = -1;
return garbage;

如果没有更多信息,这只是猜测,但是:

ItemType garbage = -1;
return garbage;

垃圾值是指不在函数可以返回的预期有效值集中,但在函数可以返回的值集中的任何值。例如,如果您的树包含正数,并且您从树搜索函数返回一个带符号的int,那么垃圾值就是任何负数。在本例中,我将返回-1作为垃圾值

对于你的情况,我可能会更换线路

return garbage - 1;


垃圾值是指不在函数可以返回的预期有效值集中,但在函数可以返回的值集中的任何值。例如,如果您的树包含正数,并且您从树搜索函数返回一个带符号的int,那么垃圾值就是任何负数。在本例中,我将返回-1作为垃圾值

对于你的情况,我可能会更换线路

return garbage - 1;


我知道这可能超出了范围,但当您没有要返回的Sensive值时,可以使用boost::optional。更多信息请访问:

我知道这可能超出了范围,但如果没有可返回的Sensive值,则可以使用boost::optional。更多信息请访问:

看起来您在计算中使用了“垃圾”,而之前没有对其进行初始化。或许

ItemType garbage = 0;
return garbage - 1;

共享和享受。

看起来您在计算中使用了“垃圾”,而之前没有对其进行初始化。或许

ItemType garbage = 0;
return garbage - 1;

分享和享受。

垃圾的主要特性是它可以是任何东西。仅仅通过查看值无法判断某个值是否是垃圾。例如,用一些任意选择但确定的值零初始化垃圾变量并返回它


实际上,在C++语言中,在一般情况下,任何操作未初始化变量的值都会导致未定义的行为。您不能在C++中返回真正的垃圾。如果要返回变量或对其应用算术运算,必须初始化变量。

垃圾的主要属性是它可以是任何东西。仅仅通过查看值无法判断某个值是否是垃圾。例如,用一些任意选择但确定的值零初始化垃圾变量并返回它


实际上,在C++语言中,在一般情况下,任何操作未初始化变量的值都会导致未定义的行为。您不能在C++中返回真正的垃圾。如果要返回变量或对其应用算术运算,则必须初始化变量。

答案取决于我们无法访问的类ItemType的详细信息。根据您可以对ItemType执行何种操作,以及您对“垃圾”值有何种要求,理论上您有两种选择

直接构造并返回“垃圾”值。类似于returnitemtype-1;或返回ItemTypeNULL;具体来说,构造垃圾值的方式取决于所拥有的构造函数及其语义。 也许你甚至不应该关心具体的值。由于您有一个inTree输出变量来指示何时未找到值,因此可能只返回默认值return ItemType;因为代码不再是冗余的,也就是说,对于方法1,如果调用方不检查inTree,那么希望使用“垃圾”可以防止代码出错。
答案取决于我们无法访问的类ItemType的详细信息。根据您可以对ItemType执行何种操作,以及您对“垃圾”值有何种要求,理论上您有两种选择

直接构造并返回“垃圾”值。类似于returnitemtype-1;或返回ItemTypeNULL;具体来说,构造垃圾值的方式取决于所拥有的构造函数及其语义。 也许你甚至不应该关心具体的值。由于您有一个inTree输出变量来指示何时未找到值,因此可能只返回默认值return ItemType;因为代码不再是冗余的,也就是说,对于方法1,如果调用方不检查inTree,那么希望使用“垃圾”可以防止代码出错。
你能展示一下你所指的全部代码吗?对于初学者来说,我们不知道函数应该返回什么。使用复制和粘贴发布所有相关代码,即完整的函数。ItemType声明也可能有帮助。没有垃圾值这样的东西。ISO C++标准定义了
e单位化POD类型变量的值不确定,这可能意味着任何事情,包括陷阱表示;因此,访问它会导致未定义的行为,例如,一致性实现可能编译您的程序并生成返回时崩溃的代码。也许您应该使用const定义。常量int垃圾值=-1;然后在找不到项时返回垃圾值。您能显示您所指的全部代码吗?对于初学者来说,我们不知道函数应该返回什么。使用复制和粘贴发布所有相关代码,即完整的函数。ItemType声明也可能有帮助。没有垃圾值这样的东西。ISO C++标准定义了一个单化的POD型变量的值作为不确定的,并且这可能意味着任何东西,包括陷阱表示;因此,访问它会导致未定义的行为,例如,一致性实现可能编译您的程序并生成返回时崩溃的代码。也许您应该使用const定义。常量int垃圾值=-1;然后在找不到项目时返回垃圾值。盲目猜测质量,但是是的,信息太少,无法做出好的回答盲目猜测质量,但是是的,信息太少,无法做出好的回答