我的heap.h文件包含:
bool insert(int key, double data);
在我的heapCPP.cpp文件中我有:
bool heap::insert(int key, double data){
bool returnTemp;
node *temp = new node(key, data);
returnTemp = insert(temp);
delete temp;
return returnTemp;
}
然而,我收到一条错误,说"成员函数" heap :: insert"可能不会在课外重新申报。
答案 0 :(得分:8)
您可能忘记了cpp中的右括号,这可以解释为在另一个函数中重新声明了它。
答案 1 :(得分:1)
错误消息足够清楚。如果function insert是类堆的成员函数,它应首先在类定义中声明。
例如
class heap
{
//...
bool insert(int key, double data);
//,,,
};
考虑到您在第一个函数
的主体内使用了另一个名称为insert的函数returnTemp = insert(temp);
所以看起来你的功能声明和定义有些混乱。
答案 2 :(得分:0)
我遇到了同样的问题。在“插入”函数定义之前和之后检查函数定义。确保为之前的函数定义包含右括号。
我的函数定义嵌套在另一个定义中,这导致了我的错误。
答案 3 :(得分:0)
我有同样的错误消息,但在我的情况下,问题是由 .cpp 文件中的分号引起的(来自错误的复制和粘贴)。即cpp文件中的函数签名末尾有一个分号。
如果我以您的代码为例,
heap.h:
bool insert(int key, double data);
heapCPP.cpp:
bool heap::insert(int key, double data);
{
// ...
}
在 heapCPP.cpp 中修复它:
bool heap::insert(int key, double data)
{
// ...
}