出现错误:ISO C++禁止无类型的声明

49

我遇到以下错误:

ISO C++禁止声明未指明类型的ttTreeInsert

ISO C++禁止声明未指明类型的ttTreeDelete

ISO C++禁止声明未指明类型的ttTreePrint

int ttTree::ttTreePrint()的原型与类ttTree中的任何一个不匹配

候选项为:void ttTree::ttTreePrint()

这是我的头文件:

#ifndef ttTree_h
#define ttTree_h

class ttTree 
{
public:
  ttTree(void);
  int ttTreeInsert(int value);
  int ttTreeDelete(int value);
  void ttTreePrint(void);
  
};

#endif

这是我的.cpp文件:

#include "ttTree.h"

ttTree::ttTree(void)
{
  
}

ttTree::ttTreeInsert(int value)
{
}

ttTree::ttTreeDelete(int value)
{
}

ttTree::ttTreePrint(void)
{
}

有人能指出是什么导致了这些错误吗?谢谢!


早期版本的C++将无返回类型的函数视为void。但是ISO C++禁止声明没有类型的函数,以避免程序和函数的意外行为。在这里,一个快速的解决方法是提到你正在声明的函数的适当返回类型。 - Chandra Shekhar
2个回答

69

您在成员函数定义中忘记了返回类型:

int ttTree::ttTreeInsert(int value) { ... }
^^^               

等等。


那么为什么它说“ISO C++禁止使用无类型的声明……”,而不是“定义”或“实现”? - starriet

7
您的声明是int ttTreeInsert(int value); 然而,您的定义/实现是
ttTree::ttTreeInsert(int value)
{
}

注意实现中缺少返回类型 int。相反,应该是:
int ttTree::ttTreeInsert(int value)
{
    return 1; // or some valid int
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接