0

.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 ++がコンストラクターを見つけられないのはなぜですか?

4

1 に答える 1

0

どうでも。必要な引数より1つ少ない引数を使用しています。

于 2013-01-01T23:04:56.117 に答える