2012-04-18 53 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;放在頭文件中,但這是一個壞主意 - 在全局名稱空間中轉儲名稱可能會破壞包含頭的其他文件。在源文件中這樣做不是一個好主意,但至少在那裏損壞隻影響你自己的代碼。

您還在類定義的末尾丟失了;