2014-12-07 64 views
1

我通常用C語言編寫代碼,但是試圖學習C++,而且我一直在實現一個B +樹,並且遇到了一些錯誤。這裏是我的功能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:\Users\Main\Desktop\test.cpp||In function 'void print_leaves(node*)':| 
C:\Users\Main\Desktop\test.cpp|95|error: invalid conversion from 'void*' to 'node*' [-fpermissive]| 
C:\Users\Main\Desktop\test.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函數發生這種情況見過,但我此刻不使用它。 Thaks

+2

node.pointers的類型是什麼? – Borgleader 2014-12-07 03:48:34

+4

除了使用'cout',這也可能是簡單的C ... – usr2564301 2014-12-07 03:53:32

回答

3

在C++中,與C不同,void*不會自動轉換爲其他指針類型。

你可能不應該在這個程序中使用void*。 A node應該指向其他node,而不是未知的內存塊,所以最好給這些指針適當的類型。