I have this small program, which does some data handling with structs:

struct App {
  private int[] fData;
  this(size_t initialSize) {
    fData = new int[initialSize];
  }
  void put(int i) {
    fData[0] = i;
  }
  int[] get() {
    return fData;
  }
}

struct Builder {
  int i;
  App app = App(2);
  this(int i_) {
    i = i_;
//    app = App(2);
  }
  void put(int v) {
    app.put(v);
  }
  int[] get() {
    return app.get();
  }
}

int[] get(int i) {
  auto b = Builder(i);
  b.put(i);
  return b.get();
}


unittest {

  auto h1 = get(1);
  auto h2 = get(2);
  assert(h1[0] == 1);
  assert(h2[0] == 2);
}

int main(string[] args) {
  return 0;
}

compiling this with dmd -unittest shows, that the tests are failing.
if you comment in the line // app = App(2); then the tests work as expected. Could you please explain what struct Builder { App app = App(2); } does exactly compared to doing thins in the structs constructor?

thanks in advance

christian

Reply via email to