错误:成员函数可能不会在其类之外声明。

时间:2015-04-23 18:03:03

标签: c++

我的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"可能不会在课外重新申报。

4 个答案:

答案 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)
{
    // ...
}