头文件中的类定义,包括字符串

时间:2012-04-18 14:45:40

标签: c++ class header-files

这是我目前的标题集合:

 #include "Header1.h"
 #include "BedAndMatress.h"
 #include "Sofa.h"
 #include "Table.h"
 #include iostream
 #include fstream
 #include iomanip 
 #include string
 #include cmath
 #include vector

using namespace std;


int main()

includes和命名空间std位在我的主文件和我的'functions definitions.cpp'文件中。但是,编译器会抛出一些错误:

  e:\computing\coursework2\programme.cpp(2) : fatal error C1083: Cannot open include
 file: 'BedAndMatress.h': No such file or directory

最初我在Header1.h文件中定义了所有类,但是它对文件和类定义的意外结束抱怨,所以我决定将它们分开。该文件包含在项目中,所有其他文件似乎都在工作,所以我不确定它们是怎么回事。我还创建了一个名为Bed的新头文件,但它有相同的错误,所以我改变了它认为可能已经有一个带有该名称的标准文件(显然是远射)是否有最大数量的头文件?

此外,在类定义中,一些成员对象应该是字符串......

#ifndef CLASS_Bed
#define CLASS_Bed
//////BED
class Bed:public Item
{
string frame;
string frameColour;
string mattress;

public:

int Bed(int count);
int Bed(int count, int number, string name, string frm, string fclr, string mtres);
void count();
void printDetails();
}
#endif

但它没有识别类型说明符。

error C2501: 'string' : missing storage-class or type specifiers

我应该包含字符串吗?我在某处读到这可能会导致问题所以如果那不是解决方案我应该如何进行?

很高兴 HX

4 个答案:

答案 0 :(得分:2)

  

我应该包含字符串吗?我在某处读到这可能会导致问题所以如果那不是解决方案我应该如何进行?

您应该加入<string>。你可能已经读过将using namespace std;放在标题中是不行的,这是真的。但如果你需要它,包括标题并没有错。您需要限定string的使用资格:

#ifndef CLASS_Bed
#define CLASS_Bed
//////BED
#include <string>
class Bed:public Item
{
std::string frame;
std::string frameColour;
std::string mattress;

public:

int Bed(int count);
int Bed(int count, int number, std::string name, std::string frm, std::string fclr, std::string mtres);
void count();
void printDetails();
};     //<-- note semi-colon here
#endif

答案 1 :(得分:1)

问题是你在类定义中的右大括号之后缺少一个分号。

答案 2 :(得分:0)

  

最初,我在Header1.h中定义了所有类   文件,但它是关于文件和类的意外结束的呻吟   因此我决定将它们分开。

这是因为你忘了在类定义之后加一个分号

class Bed:public Item
{
 ...
}; //notice the semicolon 

#endif

答案 3 :(得分:0)

  

最初我在Header1.h文件中定义了我的所有类,但它对文件和类定义的意外结束抱怨,所以我决定将它们分开。

这可能意味着您错过了某个地方的结束括号()]}>);如果编译器到达文件末尾而没有关闭所有括号,则编译器将给出该错误。但是,无论如何将类放在单独的标题中是个好主意。

  

致命错误C1083:无法打开包含    file:'BedAndMatress.h':没有这样的文件或目录

这表示无法找到名为"BedAndMatress.h"的文件。你有一个有这个名字的文件吗?它与包含它的源文件位于同一目录中吗?如果没有,您是否在包含路径中指定目录?文件名的拼写是否与那个拼写完全相同?

  

错误C2501:'string':缺少存储类或类型说明符

首先,您需要包含<string>才能获得定义。然后,您需要使用其全名std::string。您可能想把using namespace std;放在头文件中,但这是一个坏主意 - 在全局命名空间中转储名称可能会破坏包含头文件的其他文件。在源文件中执行此操作也不是一个好主意,但至少损坏只会影响您自己的代码。

您在课程定义的最后还缺少;