另一个“ISO C ++禁止声明”错误

时间:2014-05-05 22:29:23

标签: c++ compiler-errors declaration

我知道有很多关于此的问题,但我已经检查了我的程序是否存在常见错误,而且我似乎无法找到任何错误。

我在文件strlist.cpp的第一行拷贝构造函数中遇到这些错误:

ISO C ++禁止声明'Strlist'没有类型[-fpermissive] 没有在'StrList'类中声明的'int StrList :: Strlist(const StrList&)'成员函数

以下是该部分:

 /* copy constructor */
 40 StrList::Strlist(const StrList& rhs)
 41 {
 42    intitList(&list);
 43    Struct Node *current = (rhs.list).head;
 44    while(current != NULL){
 45       AddFront(*(const MyString *)current->data);
 46       current = current->next;
 47    }
 48    reverse();
 49 }

以下是我的头文件中的复制构造函数:

  5 #ifndef __STRLIST_H__
  6 #define __STRLIST_H__
 11 
 12 #include "mystring.h"
 13 #include "stdio.h"
 14 #include "stdlib.h"

 20 
 21 extern "C" {
 22 #include "mylist.h"
 23 }
 24 
 25 class StrList {
 26 
 27     public:
(......................)
 40 
 41         /*copy constructor */
 42         StrList(const StrList& rhs);
(..................)
105 };
106 
107 #endif

我在strlist.cpp中包含了strlist.h,所以我无法弄清楚这有什么问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

ISO C ++禁止声明'Strlist',没有类型

StrList::Strlist(const StrList& rhs)
//          ^    

在阅读错误消息时你应该格外小心,编译器正试图帮助你!

答案 1 :(得分:2)

只需将StrList::Strlist更改为StrList::StrList,因为第一种方式不会引用构造函数(List部分的错误情况)