überschreiben Konstruktor c++

Habe ich abstrakte Klasse Eine

class A{
 public:
  A(dim) : dim_(dim);
 private:
  int dim_;
}

Klasse B

class B : public A{
 public:
  B(int dim);
}

und ich brauche, um Konstruktor für die Klasse B, die nur funktioniert, wenn dim > 1, und werfen Behauptungen sonst.

in diesem Fall

B::B(int dim) : A(dim){
  assert(dim > 1);
}

es funktioniert, aber es ist keine gute Lösung denke ich, da die Instanz der Klasse A wurde angelegt und gelöscht werden.

Als ich die init-Methode für die Klasse A:

class A{
 public:
  void init(int dim){
    dim_ = dim;
  }
  A(int dim){
    init(dim);
  }
 private:
  int dim_;
}

und ändern Konstruktor der Klasse B:

class B : public A {
 public:
  B(int dim){
    assert(dim > 1);
    init(dim);
  }
}

aber es funktioniert nicht. Gibt es mögliche Lösungen für mein problem?

Klasse A ist nicht abstract...
irgendwie habe ich das Gefühl, dass sich auf 'dim' in deinem Tor ist der falsche Ansatz.

InformationsquelleAutor user1761982 | 2013-01-05

Schreibe einen Kommentar