他のヘッダファイルで使われているGlobal.hと呼ばれる問題のファイルのコードです。ファイルにはヘッダファイルは含まれていませんが、インクルードされていないヘッダファイルのクラス/関数は引き続き使用できます
#pragma once
enum SType {null, lab, assignment, testPrep};
enum Code {none, 123, 222, 333, 432};
template<typename D>
bool validate(D task = string, D date = string) {
bool result = true;
if (task.size() < 3) {
cout << "Task too simple, please elaborate." << endl;
result = false;
}
else if (task.size() > 50) {
cout << "Task too detailed. Only 30 chars allowed." << endl;
task.empty();
result = false;
}
if (date == "02/20/93") {
date.empty();
date = "My birthday!";
}
return result;
}
ご覧のとおり、名前空間または特定のファイルの使用を宣言することなく、文字列オブジェクトとostreamオブジェクトを使用できます。明らかに、これはGlobal.hが他の場所から情報を引き出していることを意味しますが、この情報がどこから来ているのか不思議です。私はいつもヘッダーファイルがファイル自体の#includeディレクティブに含まれていれば他のファイルのコードを再調整すると考えていたので、どういうことが起こっているのか分かりませんし、何が起こっているのか知りたいのです。
あなたは 'g ++ -c Global.h'を使ってそれをコンパイルすることを意味します。 –
@ Jean-Francois Fabreビジュアルスタジオで動作しますが、gccコンパイラが何をするのかは不明です – gotMoreGoodstuff