私は複数ファイルの C++ プログラムにかなり慣れていないので、十分に説明できるかどうかさえわからない問題を抱えています。ここに問題があります。私の .cpp ファイルの 1 つで、その #include リストに含まれている関数を使用できません。
これが私がやったことです: まず、main.cpp にコードを書きました。すべてが正常に機能し、コンパイルして、私が指示したことを正確に実行します。現在、そのコードを client.cpp に移動しようとしていますが、main.cpp で正常に機能していた文字列、ストリーム、またはその他のものを宣言できません。
うまく機能したコードは次のとおりです。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <direct.h>
#include <string>
#define SAVE_FILE_LOC "C:\\Saves\\"
int main()
{
ofstream saveFile;
string loc;
string userName;
printf("Please enter your user name:\n");
getline(cin, userName);
loc = SAVE_FILE_LOC;
loc = loc + userName;
if (_mkdir(loc.c_str()) == -1){
printf("Location Already Exists!\n");
}
else{
loc = loc + "\\Profile.txt";
saveFile.open(loc.c_str());
saveFile << "Test";
saveFile.close();
}
return 0;
}
今、私がした唯一のことは、「ソースファイル」フォルダーを右クリックして(VSで)新しい.cppファイルを追加し、client.cppという名前を付け、上記の正確なコードをコピーしてファイルに貼り付けたことでした。動作しません。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <direct.h>
#include <string>
#define SAVE_FILE_LOC "C:\\Saves\\"
int login(void);
int login(void)
{
ofstream saveFile;
string loc;
string userName;
printf("Please enter your user name:\n");
getline(cin, userName);
loc = SAVE_FILE_LOC;
loc = loc + userName;
if (_mkdir(loc.c_str()) == -1){
printf("Location Already Exists!\n");
}
else{
loc = loc + "\\Profile.txt";
saveFile.open(loc.c_str());
saveFile << "Test";
saveFile.close();
}
return 0;
}
上記のコードから 30 のコンパイル エラーが発生します。例を次に示します。
エラー 1 エラー C2065: 'ofstream': 宣言されていない識別子 ***\Client.cpp 14 1 ConsoleApplication4 エラー 2 エラー C2146: 構文エラー: ';' がありません 識別子 'saveFile' の前に ***\Client.cpp 14 1 ConsoleApplication4
コンパイラは、突然、文字列やストリームなどを作成できないと言っています。コードの #include 部分でエラーが発生していないことに注意してください。したがって、ライブラリが見つからないことを示しているわけではありません。
この場合、ここで何を探す必要があるのか わかりません.mainという名前ではない.cppファイルを作成すると、インクルードが機能しないのはなぜですか?
編集:問題が見つかり、メインが使用されusing namespace std
、client.cppにその行がありませんでした。