C 程序以C++ B+ 树

C program to C++ B+ Tree

本文关键字:C++ 程序      更新时间:2023-10-16

我通常用C语言编码,但试图学习C++并且我一直在实现B +树,并且遇到了一些错误。这是我的函数

void print_leaves(node *root)
{
    int i;
    node *c = root;
    if (root == NULL) {
        cout << "Empty tree" << endl;
        return;
    }
    while (!c->is_leaf)
    {
        c = c->pointers[0];
    }
    while (true)
    {
        for (i = 0; i < c->num_keys; i++)
        {
            printf("%d ", c->keys[i]);
        }
        if (c->pointers[order - 1] != NULL)
        {
            cout << " | ";
            c = c->pointers[order - 1];
        }
        else
            break;
    }
    cout << endl;
}

这是我得到的错误:

C:UsersMainDesktoptest.cpp||In function 'void print_leaves(node*)':|
C:UsersMainDesktoptest.cpp|95|error: invalid conversion from 'void*' to 'node*' [-fpermissive]|
C:UsersMainDesktoptest.cpp|107|error: invalid conversion from 'void*' to 'node*' [-fpermissive]|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我在网上查看并看到 malloc 功能发生这种情况,但目前我没有使用它。他克斯

在C++中,与 C 不同,void* 不会自动转换为其他指针类型。

您可能不应该在此程序中使用void*node应该指向其他node,而不是指向未知的内存块,因此最好为这些指针提供适当的类型。