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

Переопределение размера массива указателей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение файлов - исправить ошибки в коде http://www.cyberforum.ru/cpp-beginners/thread1241114.html
Добрый день. Возникла проблема, с которой раньше не сталкивался: файл не открывается. Искал с интернете, в учебниках, в предыдущих программах, которые писал - ничего не работает. #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv) {
C++ Создать класс, в котором можно сохранить любой вызываемый объект или функцию Возникла идея создать класс, в котором можно сохранить любой вызываемый объект или функцию. Что то наподобие std::function, но только не параметризирован, с использованием технологии Type Erasure. Вот такой первый набросок получился (естественно не рабочий):#include <iostream> #include <string> #include <memory> #include <vector> #include <boost/type_traits/function_traits.hpp> class... http://www.cyberforum.ru/cpp-beginners/thread1241101.html
C++ Error LNK2019: ссылка на неразрешенный внешний символ
Здрасте, Потребовалось вызвать dll из другой папки, пришлось переписывать импорт под динамический вызов, но тут полезли ероры. myIDirect3DDevice9.obj : error LNK2001: неразрешенный внешний символ ""public: static int (__cdecl* TwBarFunc::TwWindowSize)(int,int)" (?TwWindowSize@TwBarFunc@@2P6AHHH@ZA)" 1>myIDirect3DDevice9.obj : error LNK2001: неразрешенный внешний символ ""public: static...
Односвязный список: В чём разница между struct и class? C++
После неудач работы с Vector, а так же отсутствия (Хотя, скорее всего, я просто плохо искал) хорошей русской документации по нему, решил запилить свой велосипед с самоваром и тёрками. Список состоит из шаблона класса "заголовка" и шаблона класса элемента. В шаблоне ссылка на первый элемент, размер списка и функции по работе со списком. Основу элемента списка составляет указатель на переменную...
C++ Создание и удаление объекта. Ошибка 134 в Linux http://www.cyberforum.ru/cpp-beginners/thread1241052.html
Имеется следующий класс class BoardView { private: Board *brd; void Show(); public:
C++ Как разделить результат, возвращаемый Multi curl? 1)Я вообще непонимаю зачем нужна функция static int writer(char *data, size_t size, size_t nmemb, string *buffer) как по мне делает какую-то ерунду. 2) На php курл реализован как-то лучше)) так как результат работы курла возвращает функция curl_exec аналог в с++ curl_easy_setopt который возвращает лишь статус(( ну да ладно вопрос в другом, ниже приведён код с использованием мультикурла,... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2779 / 1425 / 393
Регистрация: 18.10.2014
Сообщений: 2,620
03.11.2014, 07:06     Переопределение размера массива указателей
Цитата Сообщение от Iksyara Посмотреть сообщение
Пришлось писать вот это
1. Везде используется 'delete m_massive' вместо правильного 'delete[] m_massive'.
2. Функция 'void Add(T* data, int id)' безо всякой видимой причины отказывается добавлять элемент сразу за последним. А ведь достаточно просто исправить первый if

C++
1
if(id < 0 || id > m_count) return;
3. Нет смысла реализовывать функцию 'void Add(T* data)' "с нуля", когда рядом лежит готовая 'void Add(T* data, int id)'. Надо лишь разрешить пункт 2
4. По какой-то непонятной причине функция 'void Add(T* data, int id)' написана через два цикла (цикл "до" и цикл "после"), что является правильной идеей. Но при этом функция 'void Remove(int id)' написана через один цикл с внутренним 'if'. Как будто два разных человека писало...
5. Функция добавления элемента почему-то делает двухшаговое создание нового элемента (конструирование пустого+присваивание)

C++
1
2
temp[m_count] = new T;
*temp[m_count] = *data;
вместо того, чтобы просто воспользоваться конструктором копирования и сделать все за один шаг

C++
1
temp[m_count] = new T(*data);
6. Не понятно почему используется знаковый тип в качестве индекса массива. Это лишь создает необходимость проверки на отрицательный индекс. Можно было использовать беззнаковый тип и такую проверку не делать.

7. Метод 'Swap' несколько удивляет своей реализацией. Почему он обменивает содержимое объектов, а не просто указатели? Возникает вопрос: а нафига вообще данный массив реализован внутренне как массив указателей (а не массив самих объектов), если предоставляемые такой реализацией уникальные оптимизационные возможности не используются? Опять же, не используется конструктор копирования.

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