我有一个类,它将处理我之前创建的另一个类的对象数组(工作正常)。当我尝试创建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 ++很陌生,所以有点令人困惑,我还没有找到任何合适的答案。如果你能为我解释这个错误会很棒。
答案 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
命名空间中声明自己的类;这是为标准库保留的。你应该自己制作你自己的命名空间名称,然后把你的东西放进去。