Stefano, Does this work for you? (see the attached file). Nusret --- corey taylor <corey.taylor@xxxxxxxxx> wrote: > 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? > > > > > > > > > > > > > ____________________________________________________ Start your day with Yahoo! - make it your home page http://www.yahoo.com/r/hs
/****************************/ #include<valarray> using namespace std; class mvector : public valarray<double> { public: mvector(); mvector(int size); mvector& operator=(valarray<double>& arg){ return (mvector&)(this/*maybe not necessary*/->valarray<double>::operator=(arg)); } }; mvector::mvector() : valarray<double>() {} mvector::mvector(int size): valarray<double>(size){} int main() { mvector v(3); v = (mvector&)((valarray<double>&)v + 2.0); }