2012-04-18 63 views
0

这是我目前头采集:类定义和包括串

#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() 

包括和命名空间std位都在我的主文件和我的“功能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

+0

你有'#include string'或'#include '? – 2012-04-18 14:48:55

+0

您的床类缺少一个尾随的分号'class Bed:public Item {// details ...}; // <-add分号“ – EdChum 2012-04-18 14:49:32

回答

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

的问题是,你缺少的类定义结束花后一个分号。

+0

虽然这是一个问题,但我认为它会给出不同的错误,不是吗? – 2012-04-18 14:50:38

+0

@LuchianGrigore OP提到编译器“呻吟文件和类定义的意外结束”,这通常意味着“你在编译器中忽略了一个分号”:) – dasblinkenlight 2012-04-18 14:58:00

+0

你说得对,我错过了那部分。这可能是。 – 2012-04-18 15:00:39

0

本来我有我的那么header1.h 文件中的所有类的定义,但它诉说文件和类意外结束 定义,所以我决定将它们分开。

这是因为你忘了把一个分号类定义

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

#endif 
0

本来我有我的那么header1.h文件中的所有类的定义之后,但它诉说意外的结束的文件和类定义,所以我决定将它们分开。

这可能意味着你错过了一个右括号()]}>)的地方;如果编译器在文件结束时没有关闭所有的括号,它会给出错误。但是,无论如何,将类放在单独的标头中是一个好主意。

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

,指出它无法找到该文件名为"BedAndMatress.h"。你有这个名字的文件吗?它是否与包含它的源文件位于同一目录中?如果不是,你是否在包含路径中指定目录?这个文件名拼写完全是这样的,用大写字母吗?

错误C2501:“串”:缺少存储类或类型说明符

首先,你需要包括<string>得到的定义。那么你需要使用它的全名std::string。你可能会想把using namespace std;放在头文件中,但这是一个坏主意 - 在全局名称空间中转储名称可能会破坏包含头的其他文件。在源文件中这样做不是一个好主意,但至少在那里损坏只影响你自己的代码。

您还在类定义的末尾丢失了;