Hey, it seems that only one single cast is enough. Sorry, I'm not a professional programmer: this seems to work fine though.. --- 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::mvector() : valarray<double>() {} mvector::mvector(int size): valarray<double>(size){} int main() { mvector v(3); v = (mvector&)(v + 2.0); }