Форум программистов, компьютерный форум CyberForum.ru

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не удаляются символы http://www.cyberforum.ru/cpp-beginners/thread1112383.html
Сорри за глупый вопрос, короче в си++ работал с кодом в режиме отладки, нажал случайно какие-то клавиши, может из F, короче теперь открываю любой проект или создаю новый, ничего не удаляется, хотя добавлять символы можно. Tools - Import and Export settings - Reset all settings не помогает! Гугл не дал результатов. Нет идей больше, что делать? Переустанавливать студию?
C++ Указатели и двусвязные списки Уважаемые форумчане! Учусь по книжке Страструпа для начинающих. Вот пример кода: #include <iostream> #include "1.h" using namespace std; int main() { Link* norse_gods = new Link("Thor", 0, 0); http://www.cyberforum.ru/cpp-beginners/thread1112382.html
C++ Текстовой файл с уже введенным текстом зашифровать и вывести уже зашифрованный
Здравствуйте.Задание -шифр Виженера. Вроде код написал,но есть ошибки.Задание заключается в том,чтобы текстовой файл с уже введенным текстом зашифровать и вывести уже зашифрованный текст в другой текстовой файл,но ключ для шифровки вводится с консоли.Вот в начале я ввожу ключ,затем описываю переменные типа fstream для записи и использования текстовых файлов.Ну и затем сама шифровка.Как я...
C++ Как назвать элемент масива структур
Есть вот такая вот часть кода: player players = { {"ukraine", "pl", "loshkov_genadi_yurivich", 2, 19, 186, 81}, {"russia", "kp", "kachan_lidia_vladislavovna", 7, 20, 168, 52}, {"ukraine", "ta", "tarasov_genadi_yurivich", 9, 18, 190, 91} }; Как назвать элемент массива структур: {"ukraine", "pl", "loshkov_genadi_yurivich", 2, 19, 186, 81} это элемент массива, как его...
C++ Квадратная матрица A называется ортогональной, если AT=A-1 http://www.cyberforum.ru/cpp-beginners/thread1112356.html
Квадратная матрица A называется ортогональной, если A^T=A^-1. Определить, является ли заданная матрица A(n,n) ортогональной.
C++ Непонятный синтаксис, указатели, типы, ссылки В фрагменте программы, которая разбивает большое HEX число на части: unsigned __int8 *ptr8; __int32 a; Edit1->Text=("0x"+IntToHex(0x23DA6FEC,8)); a = StrToInt(Edit1->Text); ptr8=(__int8*)&a; Edit6->Text="0x"+IntToHex(*ptr8,2); Edit5->Text="0x"+IntToHex(*(1+ptr8),2); Edit4->Text="0x"+IntToHex(*(2+ptr8),2); подробнее

Показать сообщение отдельно
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,594
07.03.2014, 00:12     Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
warning: deprecated conversion from string constant to ‘char*’
Означает, неявное преобразование из константного массива символов к указателю на неконстантный массив символов объявлено запрещенным к использованию. Это логично. Ибо через такой указатель можно будет поменять константную строку, что приведет UB (undefined behaviour, google it).
error: no matching function for call to ‘CVector::CVector(CVector)’
CVector v3 = v1 + v2;
Операция сложения создает временный объект. Временный объект - это rvalue (google it). Преобразование rvalue к неконстантной ссылке запрещено, поэтому он пытается найти конструктор, который принимает вектор по значению, но не находит - отсюда ошибка.
no known conversion for argument 1 from ‘CVector’ to ‘CVector&’
Говорит как раз о запрете, который я озвучил выше.

Советы:
там, где вектор не изменяется - его следует передавать по константной ссылке.
методы, которые не изменяют состояние объекта вектора, следует помечать как const (в примере DU это есть).
функция exit крайне не рекомендуется к использованию в программах на С++, т.к. выход из программы игнорирует все конструкторы уже созданных объектов, что может приводить к утечкам ресурсов (для спорщиков: да, я знаю, что память отдается системе после выхода, но память не единственный ресурс).
для operator[] принято реализовывать две версии, неконстантную и константную (не позволяет менять объекты внутри вектора, только читать).

Есть еще замечания, но по сравнению с озвученным - это уже придирки.
 
Текущее время: 15:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru