stefano, After taking a quick look at valarray, it seems that operator overloads that declare operator+ for valarray are non-member functions. You will need to declarea set of operator+ overloads for mvector in the same style as valarray overloads. I think this is the problem you're seeing. Is there a reason you're trying to force a copy with the code above? corey On 7/31/05, stefano luceri <stefano@xxxxxxxxxxxxxxxxxxxxxxx> wrote: > Hello to all .... excuse for my bad english > > I've the following problem writing a simple program. I would use the > metods of std::valarray class adding some self writed method for elemnts > of double type. > > I've thought something like this: > > /****************************/ > using namespace std; > > class mvector : public valarray<double> > { > mvector(); > mvector(int size); > } > > mvector :: mvector() : valarray<double>() {} > mvector :: mvector(int size) : valarray<double>(size) {} > > int main() > { > mvector v(3); > > v = (v+2.0); > } > > /*****************************/ > > Compiling this code I obtain the following error: > > geom.cpp: In function `int main()': > geom.cpp:38: error: no match for 'operator=' in 'v = std::operator+(const > std::valarray<_Tp>&, const _Tp&) [with _Tp = double]((&1.0e+0))' > geom.cpp:22: error: candidates are: mvector& mvector::operator=(const > mvector&) > make: *** [geom.o] Error 1 > > Why can't I use the operator = like I do with valarray? > > > > > >