diff --git a/dune/solvers/iterationsteps/cgstep.hh b/dune/solvers/iterationsteps/cgstep.hh
index d05854f993c87e541f0a3f5a42246899765ccd7d..14b63ef64674546d6d38342d45373025ba6fabd4 100644
--- a/dune/solvers/iterationsteps/cgstep.hh
+++ b/dune/solvers/iterationsteps/cgstep.hh
@@ -39,7 +39,7 @@ namespace Dune {
             virtual void setProblem(const MatrixType& mat, VectorType& x, const VectorType& rhs)
             {
                 matrix_ = stackobject_to_shared_ptr(mat);
-                x_ = &x;
+                setProblem(x);
                 r_ = rhs;
             }
 
@@ -56,8 +56,11 @@ namespace Dune {
             std::shared_ptr<const MatrixType> matrix_;
             double r_squared_old_;
             Preconditioner<MatrixType, VectorType>* preconditioner_;
+
+            using Base::setProblem;
         };
 
+
 #include "cgstep.cc"
     }
 }
diff --git a/dune/solvers/iterationsteps/lineariterationstep.hh b/dune/solvers/iterationsteps/lineariterationstep.hh
index 479e84ea8bcf46bcd18e913b129a20cd0f4fb581..a9d1e8c2a0bafdb726a8f9367bf3fbfd8049dc93 100644
--- a/dune/solvers/iterationsteps/lineariterationstep.hh
+++ b/dune/solvers/iterationsteps/lineariterationstep.hh
@@ -35,7 +35,7 @@ public:
 
     //! Set linear operator, solution and right hand side
     virtual void setProblem(const MatrixType& mat, VectorType& x, const VectorType& rhs) {
-        this->x_ = &x;
+        setProblem(x);
         rhs_     = &rhs;
         setMatrix(mat);
     }
@@ -86,6 +86,9 @@ public:
     //! The linear operator
     std::shared_ptr<const MatrixType> mat_;
 
+private:
+    using Base = IterationStep<VectorType, BitVectorType>;
+    using Base::setProblem;
 };
 
 #endif