]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Type conversion between vectors
authorguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 3 May 1999 15:53:51 +0000 (15:53 +0000)
committerguido <guido@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 3 May 1999 15:53:51 +0000 (15:53 +0000)
git-svn-id: https://svn.dealii.org/trunk@1252 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/vector.h
deal.II/lac/include/lac/vector.templates.h
deal.II/lac/source/vector.cc

index ee5d026eca0d4f5425ad0c2a4758fe136fd2628d..5e82d24093bb5323b7c566c3fb853278fb51d7b7 100644 (file)
@@ -137,6 +137,12 @@ class Vector {
                                      *  U = V            . Copy all components
                                      */
     Vector<Number>& operator= (const Vector<Number>& V);
+
+                                    /**
+                                     * U = V for different types.
+                                     */
+    template<typename Number2>
+    Vector<Number>& operator= (const Vector<Number2>& V);
     
                                     /**
                                      *  U = U * V        . Scalar Produkt
index f579a75c5721f1095597e268f55b31fb24cce2aa..0f573a2ab4ed52cc682ae197e9581bde7bb37c1f 100644 (file)
@@ -526,7 +526,8 @@ Vector<Number>& Vector<Number>::operator = (const Number s)
 
 
 template <typename Number>
-Vector<Number>& Vector<Number>::operator = (const Vector<Number>& v)
+Vector<Number>&
+Vector<Number>::operator = (const Vector<Number>& v)
 {
   if (v.dim != dim)
     reinit (v.dim, true);
@@ -538,6 +539,21 @@ Vector<Number>& Vector<Number>::operator = (const Vector<Number>& v)
 
 
 
+template <typename Number>
+template<typename Number2>
+Vector<Number>&
+Vector<Number>::operator = (const Vector<Number2>& v)
+{
+  if (v.size() != dim)
+    reinit (v.size(), true);
+  if (dim!=0)
+    copy (v.begin(), v.end(), begin());
+  
+  return *this;
+}
+
+
+
 template <typename Number>
 void Vector<Number>::print (FILE* f, const char* format) const
 {
index 7f7a262fd6ff5a3ef0b1b4d8b956a471c6640923..ce8f4baeb597d6d2dda620c4fb192eac9edf2661 100644 (file)
@@ -4,7 +4,10 @@
 
 // explicit instantiations
 template class Vector<double>;
+template Vector<double>& Vector<double>::operator=(const Vector<float>&);
+
 template class Vector<float>;
+template Vector<float>& Vector<float>::operator=(const Vector<double>&);
 
 // see the .h file for why these functions are disabled.
 // template Vector<float>::Vector (const Vector<double>& v);

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.