Форум программистов, компьютерный форум, киберфорум
Наши страницы

[C++] В чём тут ошибка? (делаю конструктор-копировщик) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Классы... http://www.cyberforum.ru/cpp-beginners/thread75147.html
Написать класс точка на плоскости (CPoint), создайте два конструктора: первый по умолчанию устанавливает координаты в нули, второй в указные числа, напишите методы этого класса: установить координаты...
C++ Randomize & random нужно было сгенить рандомно пару чисел, но увы засад компилятор материт Randomize и random, андеклейр и хоть убей. stdlib.h подключил, и еще много чего пытался подключить но все безуспешно, рендом... http://www.cyberforum.ru/cpp-beginners/thread75131.html
C++ СРОЧНО!!! Составить Матрицу!(ТОлько СИ, не СИ++)
Даны два одномерных массива, в первом из которых записаны значения не нулевых элементов матрицы А, во втором - Приведенные индексы этих элементов (Порядковый номер каждого элемента, при чтении...
C++ Максимальный и минимальные элементы массивов
Доброго времени суток, уважаемый форумчане! Возникла проблема с написанием программы для решения вот так вот задачки - "Заменить минимальный элемент массива A(5x8) максимальным элементом массива...
C++ Вывести все элементы массива, встречающиеся более одного раза http://www.cyberforum.ru/cpp-beginners/thread75084.html
Дана целочисленная последовательность (одномерный массив целых чисел). Написать программу нахождения количества различных элементов этой последовательности. Вывести все элементы, встречающиеся более...
C++ Не работает getline(cin,s), istream.ignore() Использую microsoft visual c++ 6.0. не работает: string s; getline(cin,s);//дважды приходиться жать ентер При использовании cin.ignore(255,'\n') аналогичная ситуация Также... подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921

[C++] В чём тут ошибка? (делаю конструктор-копировщик) - C++

16.12.2009, 03:58. Просмотров 966. Ответов 9
Метки (Все метки)

Пытаюсь написать класс с конструктором-копировщиком.В чём тут ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  class Subroutine {
     public:
        Subroutine (){};
        Subroutine (const Subroutine& copy) : _name (copy._name),
                                 params (new vector <expr_Node_t *> (copy.params->size()))
        {
           std::copy (copy.params->begin(),
                      copy.params->end() + copy.params->size(), params);
        }
       ~Subroutine () { delete params;};
 
        string name() const {return _name;};
        void setName (const string  *const s) {_name = *s;};
 
        void pushParam (expr_Node_t *expr) {
           params->push_back(expr);
        }
     private:
        string _name;
        vector <expr_Node_t *> *params;
  };
Получаю ошибки:
Ошибки
Код
/usr/include/c++/4.3/bits/stl_algobase.h|396|instantiated from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false, _II = expr_Node_t**, _OI = std::vector<expr_Node_t*, std::allocator<expr_Node_t*> >*]’|
/usr/include/c++/4.3/bits/stl_algobase.h|435|instantiated from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false, _II = __gnu_cxx::__normal_iterator<expr_Node_t**, std::vector<expr_Node_t*, std::allocator<expr_Node_t*> > >, _OI = std::vector<expr_Node_t*, std::allocator<expr_Node_t*> >*]’|
/usr/include/c++/4.3/bits/stl_algobase.h|466|instantiated from ‘_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator<expr_Node_t**, std::vector<expr_Node_t*, std::allocator<expr_Node_t*> > >, _OI = std::vector<expr_Node_t*, std::allocator<expr_Node_t*> >*]’|
/home/user/Interpreter/function.h|50|instantiated from here|
/usr/include/c++/4.3/bits/stl_algobase.h|342|error: no match for ‘operator=’ in ‘* __result = * __first’|
||=== Build finished: 1 errors, 0 warnings ===|
и среда указывает сюда
кусок из stl_algobase.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  template<>
    struct __copy_move<false, false, random_access_iterator_tag>
    {
      template<typename _II, typename _OI>
        static _OI
        __copy_m(_II __first, _II __last, _OI __result)
        { 
      typedef typename iterator_traits<_II>::difference_type _Distance;
      for(_Distance __n = __last - __first; __n > 0; --__n)
        {
          *__result = *__first; // Вот на эту строку.
          ++__first;
          ++__result;
        }
      return __result;
    }
    };
Мне нужно перегрузить оператор '=' для класса? Я же копирую контейнер,размер элементов известен в памяти,вроде бы какая разница для STL,что там копируется.. Объясните,отчего ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru