.hに次のクラスがあります。
class Register {
int content;
public:
Register ();
}reg;
class Simulator {
int op1, op2, initial_pos;
Register RA, RB, RC, RD, PC, SP, FP;
bool zero, neg;
int mem[1024];
public:
Simulator (int, int, const std::string);
void Memdump ();
void Exec_next ();
}sim;
シミュレーターコンストラクターの定義は次のとおりです。
Simulator::Simulator (int i, int j, int k, std::string fname) {
FILE* instructions;
valA = 0;
valB = 0;
valC = 0;
valP = 0;
valE = 0;
op1 = 0;
op2 = 0;
zero = false;
neg = false;
valid1 = false;
valid2 = false;
PC::content = 0;
FP::content = j;
SP::content = j;
initial_pos = k;
for (int i = 0; i < 1024; i++)
mem[i] = 0;
//Read input file
if (instructions = fopen (filename, 'r') == NULL) {
cout << "Error 404: file not found\n";
exit (404);
}
for (int i = 0; !feof (instructions); i++)
fscanf (instructions, "%d\n", &(mem[i + initial_pos]) );
fclose (instructions);
}
しかし、このコードをコンパイルしようとすると、次のエラーメッセージが表示されます。
./TP1.h:45:2:エラー:「クラスシミュレータ」の初期化に一致するコンストラクタがありません
} sim;
^
./TP1.h:42:3:注:候補コンストラクターは実行可能ではありません:3つの引数が必要ですが、0が提供されました
シミュレーター(int、int、const std :: string);
^
./TP1.h:10:7:注:候補コンストラクター(暗黙のコピーコンストラクター)は実行可能ではありません:1つの引数が必要ですが、0が提供されました
g ++がコンストラクターを見つけられないのはなぜですか?