我为下面给出了二进制堆的程序 -
#include<iostream>
using namespace std;
/**
* Construct the binary heap.
* capacity is the capacity of the binary heap.
*/
class BinaryHeap
{
private:
int currentSize; // Number of elements in heap
int array[]; // The heap array
void buildHeap( );
void percolateDown( int hole );
public:
bool isEmpty( ) const;
bool isFull( ) const;
int findmini( ) const;
void insert( int x );
void deleteMin( );
void deleteMin( int minItem );
void makeEmpty( );
public :
BinaryHeap( )
{
currentSize = 0;
}
BinaryHeap( int capacity )
{
array[capacity + 1];
currentSize = 0;
}
};
int main()
{
int resp, ch, choice;
int n, i;
cout << "enter the size of heap" << endl;
cin >> n;
BinaryHeap b(int n);
cout << "enter the item " << endl;
cin >> ch;
b.insert( int ch);
return 0;
}
编译时会出错
请求'b'中的成员'insert',它是非类型的'BinaryHeap(int)'
和
预期在'int'之前的primary-expression
为什么会发生这种情况?如何解决?
答案 0 :(得分:5)
从int
和BinaryHeap b(int n);
移除b.insert( int ch);
,您就可以了。
调用函数时,不应指定调用它的变量的数据类型。
答案 1 :(得分:1)
尝试更改此
b.insert( int ch);
到此:
b.insert(ch);