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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? http://www.cyberforum.ru/cpp-beginners/thread53667.html
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { start_index.reserve(array->size()); copy(array->begin(),array->end(),start_index.begin()); std::cout<<start_index.at(0); } Где sz3_Arr_t это vector<int>, array - содержит элементы типа int на момент передачи параметром (проверено печатью), start_index - вектор того же типа,что и array,на момент...
C++ gcc VS DEV-C++ 4.9.9.2 Люди!! Срочно нужны знающие люди по данному вопросу.Только сейчас узнал,что вся практика будет в gcc...... Какие отличия вообще между ними ?! Программенг в SunOS... gcc сишный компиль.а вот DEV-C++ - чисто *приплюснутый*... Очень интересно,будут ли моя познания в с++ исковерканы gcc-ым компилем). http://www.cyberforum.ru/cpp-beginners/thread53664.html
C++ Преобразовать последовательность
Народ, сталкнулся с таким заданием (я примерно понял как делать) возникла проблема. Задачние: Даны действительные числа А1,...А20. Преобразовать последовательность: А1,А3,А5...А19; А2,А4...А20. Я думаю что меняем местами элементы, протягом, т.е. (например было: 12345, меняем 5 и 1, тогда стало: 51234, т.е. последовательно делали: 12354, 12534, 15234, 51234). Проблема состоит в том что немогу...
C++ Проблема со считыванием строк из класса.
Всем привет.На ютубе узрел ролик... using namespace std; int main() { ifstream f("C:\Documents and Settings\Vlad\My Documents\My Pictures\fuck.txt");
C++ Отсортировать все символы в порядке возрастания методом пузырька http://www.cyberforum.ru/cpp-beginners/thread53649.html
символы: M A S S I V - char нужно Отсортировать все символы в порядке возрастания медодом пузырька .Нужно нарисовать блок схему (((((( Мальчики ПОМОГИТЕ!!!! кто может пожалуйста..!(((
C++ Многочлен P(x) степени N помогите с задачкой: задача: Дан многочлен Р(х) степени N. Даны действительные числа А и В. Получить многочлен (Ах+В)Р(х). прогу писать не нада. помогите плиз написать математическую формулу решения задачи. подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1636 / 1008 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.10.2009, 22:31
Общепринятая практика такова, что с интерфейсами работают всё-таки через указатели. Это связано с тем, как создаются объекты, в особенности с указателями на VMT. Так что для использования преимуществ автоматических объектов я рекомендую возвращать указатель и хранить его в smart-pointer - auto_ptr или самописном, поскольку дни auto_ptr сочтены. (ну, точнее, для auto_ptr нашли замену и надо пользоваться ей, но я не помню точно, какая именно, а самописный "умный указатель" очень полезен и нагляден)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <typename T> class destructor_ptr {
public: destructor_ptr(T* Ptr): ptr(Ptr) {}
    operator T* () const {return ptr;}   // Преобразование типа для удобства использования
    ~destructor_ptr() {delete ptr;}
private: T* ptr;
};
 
IVariable* IVariable::simpleMethod();
void SomeFunc(IVariable *v);
 
void f(IVariable &object) {
    destructor_ptr<IVariable> dp = object.simpleMethod();  // Это не присвоение, а вызов конструктора
    SomeFunc(dp);  // Здесь срабатывает оператор преобразования типа
}   // А здесь dp автоматически уничтожается и освобождает указатель
Как вариант, можно и возвращать смарт-указатель, который сразу будет вести себя как автоматический объект, но его надо будет переделать в соответствии с требованиями к нему (для его передачи в функции/из функций он должен иметь конструктор копирования, и тогда надо решить вопрос владения, возможно отказаться от преобразования типа и т.д.).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru