На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Не вызывается operator=

    template<class T> class Vector  
    {
    public:
     Vector()
     {
      i_Size=1;
      mas= NULL;
     }
     
     ~Vector()
     {
      if(mas!=NULL) delete[] mas;
     }
     
     
     void Add( const T A)
     {
     
      mas=  new T [i_Size];
     
     }
     
     void operator= ( const T &a )
     {
      cout<<"copy";
     
      i_Size= a.i_Size;
     
      if(mas!=NULL) delete[] mas;
     
      if(i_Size==0)return;
     
      mas= new T [i_Size];
     
      for(int i=0; i<i_Size; i++)
      {
       mas[i]= a.mas[i];
      }
     }
     
     
    private:
     T *mas;
     int i_Size;
     
    };


    int main(int argc, char* argv[])
    {
     
     Vector<int> v1;
     Vector<int> v2;
     v2=v1;
    }


    Почему не вызывается operator= ?
      Цитата
      shadowbolt, 23.12.03, 11:22
      void operator= ( const T &a )
      {
        cout<<"copy";

      1. Возвращаемое значение должно быть Vector<T>&, а не void.
      2. Для желаемого тобою варианта оператора присваивания аргумент должен быть const Vector<T>&
        1 не обязательно, а 2 ставить надо.
          Спасибо, работает!
            KurtY
            ??? С каких это пор?
              Flex_Ferrum: Возвращать ссылку желательно, для того, чтобы можно было писать так:
              a = b = c;
              Но, в принципе, это делать не обязательно.
                а что ж спорить то.. можно просто сырцы STL-а какого нибудь глянуть..
                  AQL, ты это кому? :)
                    Цитата
                    ??? С каких это пор?

                    Сории, был не прав, давно операторы не перезагружал sad.gif
                      Цитата (reporter @ 24.12.03, 04:08)
                      AQL, ты это кому? smile.gif

                      да я так, вообще. вижу, что человек делает реализацию своего вектора. проще всего подсмотреть, как это сделано в STL...
                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                      0 пользователей:


                      Рейтинг@Mail.ru
                      [ Script execution time: 0,0235 ]   [ 16 queries used ]   [ Generated: 3.05.24, 18:10 GMT ]