私の問題にはおそらく非常に簡単な解決策がありますが、入力ファイルを (コマンドライン引数から) 解析のためにクラスに渡す際に問題が発生しています。
私のmain.cppコードの関連部分は次のとおりです。
#include <iostream>
#include <chrono>
#include "SortingCompetition.h"
int main(int argc, char** argv)
{
if (argc != 3)
{
std::cerr << "Invalid arguments" << std::endl;
std::cerr << "Usage: ./a.out <input file> <output file>" << std::endl;
return 1;
}
SortingCompetition sorter(argv[1]);
return 0;
}
SortingCompetition.h ファイルは次のとおりです。
#ifndef SORTINGCOMPETITION_H_
#define SORTINGCOMPETITION_H_
#include <string>
#include <vector>
using namespace std;
class SortingCompetition{
private:
string& input_;
vector<string> data_;
public:
SortingCompetition(const string& inputFileName);
void setFileName(const string& inputFileName);
bool readData();
bool prepareData();
void sortData();
void outputData(const string& outputFileName);
};
#endif
ここでは、すべての機能が同じままでなければなりません。つまり
SortingCompetition(const string& inputFileName);
、そのままにしておく必要があります...const
または他のものを削除することはできません。
関連する SortingCompetition の実装を次に示します。
#include "SortingCompetition.h"
SortingCompetition::SortingCompetition(const string& inputFileName){
input_ = inputFileName;
}
void SortingCompetition::setFileName(const string& inputFileName){
input_ = inputFileName;
}
ここで問題が発生します。入力ファイルをコマンド引数からプライベート変数に正しく渡していません。かなり長い間検索しましたが、解決策が見つかりません。