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

Создать на базе класса с реализацией очереди клас потомок — кольцевая очередь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как реализовать взаимодействие классов в игре "Змейка" http://www.cyberforum.ru/cpp-beginners/thread1242714.html
Всем привет. Я пишу змейку и у меня следующий вопрос. У меня есть несколько классов Game, Snake, Block, Food. Каждый класс в отдельном файле. Тело змейки состоит из блоков, следовательно нужен массив объектов класса Block, который будет обрабатываться в классе Snake, также начальные значения этого массива будут инициализироваться в классе Game. В Game также будут инициализироваться некоторые...
C++ Транспонирование матрицы - Проблема возникает в резервировании места под новую матрицу Здравствуйте. Решаю классическую задачу. Страуструп в книге задал матричный вариант. А что если векторный? Например: 1 2 3 4 5 6 7 8 9 сделать так: 1 5 7 2 6 8 3 _ 9 http://www.cyberforum.ru/cpp-beginners/thread1242704.html
Одновременная блокировка/разблокировка функционала программы C++
Прошу прощения за столь изворотливый заголовок темы. Опишу суть проблемы. Разрабатываю программу для работы с электронными токенами. В программе присутствуют два потока: один предназначен для выполнения основного функционала (интерпретация команд пользователя), другой - для отслеживания событий в слотах. Функционал программы в отсутствие токена ограничен. Для контроля за функционалом я...
C++ Обобщенная функция перевода строки в число
В книге "С++. Сборник рецептов" нашел обобщенную функцию преобразования строки в число: #include <iostream> #include <sstream> #include <conio.h> using namespace std; template<typename T> T strNum(const string& str) {
C++ Метод хорд - проверить корректность реализации кода http://www.cyberforum.ru/cpp-beginners/thread1242642.html
Приветствую, форумчане. Хочу обратиться к вам за помощью, вот еле написала программу для метода хорд, методом шары если честно, так как сама не сильна в программировании и код был соединен из двух других, так как мне нужно не просто решение, но и подсчет числа итерации. Само собой тут что то не работает, но хоть компилируется, хотя дальше ввода данных дело не идет. Так вот, проверьте пожалуйста,...
C++ Проверить вычисления на переполнение и потерю точности Надо написать функции арифметических действий с проверкой переполнения,потери и генерировать исключение если оно случается. Вообщем то как бы все просто, в функции сделать операцию в более широком типе и проверить с помощью констант INT_MAX, получается что для целочисленных типов максимум ULLONG_MAX. Как проверить выше ULLONG_MAX и какой максимум для dobule - 1.79769e+308? Добавлено через 10... подробнее

Показать сообщение отдельно
L3xx__
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 17
15.08.2014, 00:33     Создать на базе класса с реализацией очереди клас потомок — кольцевая очередь
Доброго времени суток. Я хотел создать на базе класса с реализацией очереди клас потомок - кольцевая очередь.
Исходник:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
class Queue{
protected:
    int *Wait;
    int MaxQueueLen;
    int QueueLen;
public:
    Queue(int m);
    ~Queue();
    void Add(int c);
    int Extract();
    void Clear();
    bool IsEmpty();
    bool IsFull();
    int GetCount();
    void Show();
};
 
void Queue :: Show(){
    cout << "\n-------------------------------------------------\n";
    for(int i=0; i < QueueLen; i++)
        cout << Wait[i] << " ";
    cout << "\n-------------------------------------------------\n";
}
 
Queue :: ~Queue(){
    delete [] Wait;
}
 
Queue :: Queue(int m){
    MaxQueueLen = m;
    Wait = new int [MaxQueueLen];
    QueueLen = 0;
}
 
void Queue :: Clear (){
    QueueLen = 0;
}
 
bool Queue :: IsEmpty(){
    return QueueLen == 0;
}
 
bool Queue :: IsFull(){
    return QueueLen == MaxQueueLen;
}
 
int Queue :: GetCount(){
    return QueueLen;
}
 
void Queue :: Add(int c){
    if(!IsFull()){
        Wait[QueueLen++] = c;
    }
}
 
int Queue :: Extract(){
    if(!IsEmpty()){
        int temp;
        temp = Wait[0];
        for(int i = 0; i < QueueLen - 1; i++)
            Wait[i] = Wait[i + 1];
        QueueLen--;
        return temp;
    }else{
        cout << "\nQueue is empty.";
        return -1;
    } 
}
 
class QueueRound : public Queue
{
public:
    QueueRound(int m){
        Queue(m);
    }
    ~QueueRound(){
        ~Queue();
    }
    int Extract(){
        if(!IsEmpty()){
            int temp = Wait[0];
            for (int i = 0; i < QueueLen - 1; ++i)
            {
                Wait[i] = Wait[i + 1];
            }
            Wait[QueueLen - 1] = temp;
 
            return temp; 
        }else{
            cout << "Queue is empty";
            return -1;
        }
    }
};
 
int main(){
    srand(time(NULL));
 
    Queue QU(25);
 
    for (int i = 0; i < 10; ++i)
    {
        QU.Add(rand() % 50);
    }
 
    QU.Show();
    QU.Extract();
    QU.Show();
 
    cout << "\nQueueRound\n---------------------------------------------------\n";
 
    QueueRound QR(15);
    for (int i = 0; i < 10; ++i)
    {
        QR.Add(rand() % 50);
    }
 
    QR.Show();
    QR.Extract();
    QR.Show();
 
    return 0;
}
Компилятор gcc. Выдает ошибку:
Кликните здесь для просмотра всего текста
gcc ./queue.cpp -o ./queue
./queue.cpp: In constructor ‘QueueRound::QueueRound(int)’:
./queue.cpp:80:19: error: no matching function for call to ‘Queue::Queue()’
QueueRound(int m){
^
./queue.cpp:80:19: note: candidates are:
./queue.cpp:35:1: note: Queue::Queue(int)
Queue :: Queue(int m){
^
./queue.cpp:35:1: note: candidate expects 1 argument, 0 provided
./queue.cpp:7:7: note: Queue::Queue(const Queue&)
class Queue{
^
./queue.cpp:7:7: note: candidate expects 1 argument, 0 provided
./queue.cpp:81:10: error: declaration of ‘Queue m’ shadows a parameter
Queue(m);
^
./queue.cpp:81:10: error: no matching function for call to ‘Queue::Queue()’
./queue.cpp:81:10: note: candidates are:
./queue.cpp:35:1: note: Queue::Queue(int)
Queue :: Queue(int m){
^
./queue.cpp:35:1: note: candidate expects 1 argument, 0 provided
./queue.cpp:7:7: note: Queue::Queue(const Queue&)
class Queue{
^
./queue.cpp:7:7: note: candidate expects 1 argument, 0 provided
./queue.cpp: In destructor ‘QueueRound::~QueueRound()’:
./queue.cpp:84:10: error: no matching function for call to ‘Queue::Queue()’
~Queue();
^
./queue.cpp:84:10: note: candidates are:
./queue.cpp:35:1: note: Queue::Queue(int)
Queue :: Queue(int m){
^
./queue.cpp:35:1: note: candidate expects 1 argument, 0 provided
./queue.cpp:7:7: note: Queue::Queue(const Queue&)
class Queue{
^
./queue.cpp:7:7: note: candidate expects 1 argument, 0 provided

Ошибка где-то в конструкторе(как я понимаю, компилятор не может разпознать аргумент). Но почему она возникает и как ее устранить, я не могу понять. Подскажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru