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

массив указателей на void* - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск записей в БД. Метод Locate http://www.cyberforum.ru/cpp-beginners/thread645777.html
Для поиска по базе данных в своем приложении я решил воспользоваться методом Locate. Его описание я нашел в книге Архангельского, вот какой вид он имеет: TLocateOptions SearchOptions; Variant localvalues = {EDep->Text, EFam->Text}; Table1->Locate ("Dep; Fam", VarArrayOf (locvalues, 1) , SearchOptions<loPartialKey<loCaseInsensitive); Этот код ищет Фамилию и Отдел, в...
C++ Описать класс Друг Нужно описать класс Друг.Данные класса имя,номер телефона,важность знакомства. Методы должны обеспечить минимальную функциональность объекта http://www.cyberforum.ru/cpp-beginners/thread645766.html
C++ Что такое переопределение функций
По заданию нужно в программе применить перепределение функций. Поюзал- везде ссылаются на перегрузку функций. Так переопределение функций и перегрузка функций- это одно и тоже чтоли?
C++ Кнопки и формы
Подскажите пожалуйста как в C++ создавать кнопки и формы для ввода вывода информации, интересно так же возможно ли создавать их только кодом или без специальной среды типа VS.
C++ ошибка при компиляции программы http://www.cyberforum.ru/cpp-beginners/thread645755.html
доброго времени суток. задали задание. составить программу показывающую содержимое загрузочной записи для указанного логического диска. Нашел в интернете решение уже готовый код но он не компилируется выдает ошибки подскажите что не так? Как исправить? #pragma argsused #include <stdio.h> #include <malloc.h> #include <dos.h> #include "sysp.h"
C++ LNK2019 и LNK1120 Программа состоит из 3ех файлов: names.h #ifndef NAMES_H_ #define NAMES_H_ namespace SALES { const int QUARTERS = 4; struct Sales { double sales; подробнее

Показать сообщение отдельно
max.taranukhin
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 4
02.09.2012, 17:39  [ТС]     массив указателей на void*
Цитата Сообщение от Jupiter Посмотреть сообщение
покажи весь код
Задание звучит так:
Создайте новую версию класса Stack из главы 6 с конструктором по умолчанию и вторым конструктором, в аргументах которого передается массив указателей на объекты и размер этого массива. Конструктор должен перебирать элементы массива и заносить каждый указатель в стек. Протестируйте класс с массивом объектов string.

Stack.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef STACK_H
#define STACK_H
 
class Stack
{
        struct Link
        {
                void* data;
                Link* next;
                Link(void* dat, Link* nxt);
                ~Link();
        }* head;
public:
        Stack();                              // конструктор по умолчанию
        Stack(void *arr, int count);    // конструктор принемающий массив указателей и размер этого массива
        ~Stack();
        void push(void* dat);
        void* peek();
        void* pop();
};
 
#endif
Stack.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "Stack.h"
using namespace std;
 
Stack::Link::Link(void *dat, Link *nxt)
{
        data = dat;
        next = nxt;
}
 
Stack::Link::~Link() { }
 
Stack::Stack() { head = 0; }
 
Stack::Stack(void *arr, int count)
{
        for(int i = 0; i < count; ++i)
                push(arr[i]);
}
 
void Stack::push(void *dat)
{
        head = new Link(dat, head);
}
 
void* Stack::peek()
{
        if (head == 0) return 0;
        return head->data;
}
 
void* Stack::pop()
{
        if (head == 0) return 0;
        void * result = head->data;
        Link *oldHead = head;
        head = head->next;
        delete oldHead;
        return result;
}
 
Stack::~Stack() { }
Добавлено через 2 минуты
Цитата Сообщение от novi4ok Посмотреть сообщение
как-то подозрительно все выглядит. класс называется Stack. подозреваю, что он будет реализовывать стэк (или?). тогда ему в конструктор логично задать кусок памяти, где он может развернуться, а он сразу начинает что-то куда-то пушить. может, конструктор просто должен запомнить где-то у себя атрибуты этой рабочей памяти, установить stack pointer на вершину и быть готовым? там, похоже, не должно быть никаких объектов, просто помять под указатели?
Цитата Сообщение от Герц Посмотреть сообщение
Да и вообще, странная философия какая-то, смешивать ООП и указатель на void. Страуструп не рекомендовал использовать void* в C++ коде :-)
Прошу вас, не воспринемайте эту задачу с точки зрения практики. Это всего лишь учебная задача и не более
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru