解释错误:ISO C ++禁止声明没有类型的`Personlist'

时间:2011-10-28 12:49:11

标签: c++ compiler-errors

我有一个类,它将处理我之前创建的另一个类的对象数组(工作正常)。当我尝试创建List-class的对象时出现问题。

这是list-class的标题:

#ifndef personlistH
#define personlistH
#include "Person.h"
#include <iomanip>
#include <iostream>
#define SIZE 10

namespace std {

    class PersonList {
private:
    Person persons[SIZE];
    int arrnum;
    string filename;

public:
    Personlist();
    };
}
#endif

这是主要功能:

#include <iostream>
#include "PersonList.h"

using namespace std;

int main() {

PersonList personlist;

return 0;   
}

我的编译器给出的错误如下:

  

错误:“27 \ PersonList.h ISO C ++禁止声明`Personlist'   没有类型“

我已经搜索了答案,但由于我对C ++很陌生,所以有点令人困惑,我还没有找到任何合适的答案。如果你能为我解释这个错误会很棒。

3 个答案:

答案 0 :(得分:7)

您的构造函数声明中的大小写错误。您有Personlist();但需要PersonList();。因为你拥有的不等于类名,所以它被认为是函数而不是构造函数,函数需要返回类型。

答案 1 :(得分:4)

不要将自己的类型添加到标准命名空间(std),而是创建自己的命名空间并在其中定义您的类。

// PersonList.h

namespace PersonNamespace 
{
    class PersonList 
    {
        //members here
    };
}

// Main.cpp的

using namespace PersonNamespace;

实际错误是您在Personlist而不是PersonList

中输了一个拼写错误

答案 2 :(得分:2)

错误是因为在声明构造函数时,大小写错误;它应该是PersonList()而不是Personlist()

此外,您永远不应在std命名空间中声明自己的类;这是为标准库保留的。你应该自己制作你自己的命名空间名称,然后把你的东西放进去。