簡體   English   中英

警告 C4715:並非所有控制路徑都返回值 C++

[英]warning C4715: not all control paths return a value c++

我做了兩個函數,一個用於查找並返回紅黑樹中最小的鍵,另一個返回一個指向特定節點的指針,該節點的鍵作為輸入。這些函數適用於除具有最高鍵的節點之外的所有節點和最低鍵。程序停止工作並給出 C4716 警告。 鍵是 int array[] = { 50, 26, 45, 34, 23, 78, 84, 93, 14, 16, 100, 57, 62};

int Tree::findsmallest()
{
return  findsmallestprivate(root);
}

int Tree::findsmallestprivate(node* ptr)
{
if (root != NULL)
{
    if (ptr->left != NULL)
    {
        findsmallestprivate(ptr->left);
    }
    else
    {
        return ptr->key;
    }
}
else
{
    cout << "There was no tree" << endl;
    return -1;
}
} 
Tree::node* Tree::returnnode(int key)
{
return returnnodepri(key, root);
}
Tree::node* Tree::returnnodepri(int key, node* ptr)
{
    if (ptr->key == key)
    {
        return ptr;
    }
    else if (ptr->key < key)
    {
        returnnodepri(key, ptr->right);
    }
    else if (ptr->key > key)
    {
        returnnodepri(key, ptr->left);
    }
else
{
    return NULL;
}
}

正如編譯器所說,在if (ptr->left != NULL)您無法返回值。 您需要返回一個值。

findsmallestprivate

如果條件ptr->left != NULL成立,則不會返回任何內容。 你只需運行findsmallestprivate(ptr->left); 然后退出,但不要返回預期的int

warning C4715: not all control paths return a value意味着您的函數有時可能不返回值,具體取決於其輸入。

您的其他問題與findsmallestprivate相同。

returnnodepri

ptr->key < keyptr->key > key情況下,您不會返回預期的Tree::node* 您運行returnnodepri ,但結果不返回任何值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM