クラスを実装してrequest
います。そのコンストラクターはコマンドラインを引数として取り、クラスにはファイルサイズ、最終変更時刻などのファイルステータスがフィールドとして含まれています。
これらのフィールドに値を割り当てたいと考えています。これには、 の呼び出しfstat()
、 内の値へのアクセスstruct stat
、およびこれらの値の使用が含まれます。
C++コンストラクターでの代入は推奨されておらず、初期化リストを使用する必要があることは知っていますが、コンストラクター本体(括弧の間)で関数を呼び出して代入演算子を使用せずにこれらのフィールドに値を代入する方法がわかりません。
私は何をすべきか?
コンストラクター本体でそれらを初期化する必要がある場合、最初にすべてのフィールドを初期化する必要がありますNULL
(デフォルトで行われていると思います)。
class request {
vector<string> requests;
off_t content_length;
char* last_modified;
public:
explicit request(char line[]): requests(split_string(line)), content_length(NULL), last_modified(NULL) {
struct stat sb;
if(fstat(line[1], &sb) == -1) {
cerr << "Error while getting file status of the file named " << line[1] << endl;
}
content_length = sb.st_size;
last_modified = ctime(&sb.st_mtime);
}
};
これは私のコードです。彼らは元気に見えますか?