4 / 4 / 14
Регистрация: 03.03.2013
Сообщений: 55
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов06.03.2014, 00:13. Просмотров 4297. Ответов 5
Метки нет Все метки)
(
Привет!
Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с произвольным кол-во элементов. И требуется перегрузить ряд операций. Пока что перегружены [], =, +. Но где-то ошибка и я не понимаю где. При варианте
Вот код и вывод комплятора =) main.cpp
0
|
|
06.03.2014, 00:13 | |
Создать классы "Вектор" и "Матрица", реализовать умножение матрицы на вектор
Создать класс вектор с несколькими конструкторами |
|
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
06.03.2014, 00:25 | 2 |
пока не придумал почему там при конверсии какие-то неоднозначности, но решение может быть таким:
сигнатуры функций нужно подправить. если функция работает с толстым объектом и не модифицирует его, то желательно его передавать по константной ссылке (если нет мува по крайней мере): CVector(const CVector &obj); CVector& operator=(const CVector& obj); CVector operator+(const CVector& obj) const;
1
|
4 / 4 / 14
Регистрация: 03.03.2013
Сообщений: 55
|
|
06.03.2014, 22:46 [ТС] | 3 |
Помогло, спасибо большое!
Если поймете как объяснить возникающую неоднозначность, то с удовольствием послушаю.
0
|
13712 / 7335 / 1751
Регистрация: 30.01.2014
Сообщений: 12,302
|
|
07.03.2014, 00:12 | 5 |
Советы: там, где вектор не изменяется - его следует передавать по константной ссылке. методы, которые не изменяют состояние объекта вектора, следует помечать как const (в примере DU это есть). функция exit крайне не рекомендуется к использованию в программах на С++, т.к. выход из программы игнорирует все конструкторы уже созданных объектов, что может приводить к утечкам ресурсов (для спорщиков: да, я знаю, что память отдается системе после выхода, но память не единственный ресурс). для operator[] принято реализовывать две версии, неконстантную и константную (не позволяет менять объекты внутри вектора, только читать). Есть еще замечания, но по сравнению с озвученным - это уже придирки.
1
|
4 / 4 / 14
Регистрация: 03.03.2013
Сообщений: 55
|
|
07.03.2014, 01:21 [ТС] | 6 |
castaway, если подправить PrintVector, тоже больше никаких предупреждений не выводится.
DrOffset, с UB и rvalue более менее понятно. С exit - тоже. Всем большое спасибо!
0
|
07.03.2014, 01:21 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Создать класс "vec4" как вектор из четырех float Создать класс "Вектор в двумерном евклидовом пространстве" ООП: Создать класс "Вектор на плоскости" Создать класс "Вектор в трехмерном пространстве" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |