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

インクルードと名前空間の標準ビットは、メイン ファイルと「関数定義.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

文字列を含める必要がありますか?これが問題を引き起こす可能性があることをどこかで読んだので、それが解決策でない場合はどうすればよいですか?

Ta かなり Hx

4

4 に答える 4

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
于 2012-04-18T14:48:32.830 に答える
1

問題は、クラス定義の閉じ中括弧の後にセミコロンがないことです。

于 2012-04-18T14:49:30.650 に答える
0

もともと私はHeader1.hファイルにすべてのクラスの定義を持っていましたが、ファイルとクラスの定義の予期しない終わりについてうめき声を上げていたので、それらを分離することにしました。

これはおそらく、どこかで閉じ括弧(、、、または))を見逃したことを意味します。すべての角かっこを閉じずにファイルの終わりに達すると、コンパイラはそのエラーを出します。ただし、とにかくクラスを別々のヘッダーに配置することをお勧めします。]}>

致命的なエラーC1083:インクルードファイルを開くことができません:'BedAndMatress.h':そのようなファイルまたはディレクトリはありません

これは、というファイルが見つからないことを意味します"BedAndMatress.h"。その名前のファイルはありますか?それを含むソースファイルと同じディレクトリにありますか?そうでない場合は、インクルードパスでディレクトリを指定していますか?ファイル名は、その大文字と小文字を区別して、まったく同じように綴られていますか?

エラーC2501:'文字列':ストレージクラスまたは型指定子がありません

まず、<string>定義を取得するために含める必要があります。次に、そのフルネームを使用する必要がありますstd::string。ヘッダーファイルを入れたくなるかもしれませんがusing namespace std;、それは悪い考えです。グローバル名前空間に名前をダンプすると、ヘッダーを含む他のファイルが破損する可能性があります。ソースファイルでもそれを行うのは良い考えではありませんが、少なくともそこでの損傷はあなた自身のコードにのみ影響します。

;また、クラス定義の最後にがありません。

于 2012-04-18T15:08:58.623 に答える
0

もともと、Header1.h ファイルにすべてのクラスの定義がありましたが、予期しないファイルの終わりとクラス定義についてうめき声があったため、それらを分離することにしました。

これは、クラス定義の後にセミコロンを付けるのを忘れたためです。

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

#endif
于 2012-04-18T14:53:39.950 に答える