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

Почуму конструктор ругается??? - C++

Восстановить пароль Регистрация
 
Pavel1133
3 / 3 / 0
Регистрация: 12.10.2009
Сообщений: 81
26.12.2009, 11:53     Почуму конструктор ругается??? #1
вот програма реализующая класс очередь, почти всё работает , тока выдаёт 2 ошибки связанные с конструктором

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
#include <iostream>
using namespace std;
class queue{
private:
    int P[5];
    int k,n;
public:
    queue(int &P,int &k,int &n){
        //for(int i=0;i<5;i++)
         //P[i]=0;
            k=-1;
            n=0;    
    };
    
    friend queue push(queue &A);
    friend queue pop(queue &A);
    friend void show(queue A);
};
//queue(int P,int k,int n){
//  for(int i=0;i<5;i++)
//      A.P[i]=0
//  k=-1;
//  n=0;    };
queue push(queue &A){
        if(A.k==-1)
            for(int i=0;i<5;i++)
                A.P[i]=0;
    int a;
    cout<<"ccedite element dlia dobavleniya: ";
    cin>>a;
    if((A.n==A.k)&&(A.n+1!=0)){
        
        cout<< "o4ered polna";
    }
    else{
    if(A.n==5)
        A.n=0;
    //if(k==5)
    //  k=0;
    A.P[A.n]=a;
        A.n++;
        if((A.n==1)&&(A.P[A.n]==0))
            A.k=0;
 
    }
        return A;
}
queue pop(queue &A){
    if((A.n==A.k)&&(A.n+1==0)){
        cout<<"o4ered' polna";
    }
    else{
        if(A.k==5)
            A.k=0;
        A.P[A.k]=0;
        A.k++;
    }
    return A;
}
void show(queue A){
for(int i=0;i<5;i++)
cout<<A.P[i]<<' ';
}
int main(){
    int l,i=0;
    queue A;
    while(i<i+1){
        cout<<"1 - push\n";
        cout<<"2 - pop\n";
        cout<<"3 - show\n";
        cout<<"4 - exit\n";
    cin>>l;
    switch(l){
        case 1:push(A);
                   break;
        case 2:pop(A);
            break;
        case 3:show(A);
            break;
        case 4:exit(1);
    }
    }
}
Ошибки:
1>f:\1\1\1.cpp(10) : error C2109: subscript requires array or pointer type
1>f:\1\1\1.cpp(66) : error C2512: 'queue' : no appropriate default constructor available

help
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2009, 11:53     Почуму конструктор ругается???
Посмотрите здесь:

ругается на M_PI C++
C++ Ругается на If
C++ C++ ругается на конструктор! Как исправить ?
Ругается на if (a>M_PI) C++
ругается на конструктор C++
ругается компилятор: C++
C++ Компилятор не ругается
Ругается new при создании динамического массива через перегруженный конструктор C++
C++ Массив объектов класса в другом классе (композиция). Компилятор ругается на конструктор
Ругается на gets() C++
Ругается на библиотеку C++
Почему ругается на else? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazorQ
 Аватар для RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
26.12.2009, 12:15     Почуму конструктор ругается??? #2
Здесь надо всё переписывать. Зачем ты используешь классы, если программируешь как на структурном языке? Попробуй ешё раз прочитать теорию по классам и реализовать очередь.

Не по теме:

Для самых ленивых
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
/*
 * File vqueue.h
 * VQueue: реализует структуру данных очередь
 */ 
#ifndef V_QUEUE_H
#define V_QUEUE_H
 
template< class T >
class VQueue
{
public:
    inline VQueue()
        { first = NULL; last = NULL; }
    inline ~VQueue();
    void enqueue( const T &enValue );   // вставить элемент в очередь
    T dequeue();    // удалить элемент
    T &head()       // вернуть верхний элемент (без извлечения)
        { return first->data;}
    const T &head() const
        { return first->data;}
private:
    inline bool isEmpty()   // пуста ли очередь
        { return first == NULL; }
    struct queueNode
    {
        T data;
        queueNode *nextPtr;
    };
    queueNode *first;   // верхний элемент
    queueNode *last;    // нижний элемент
};
 
template< class T >
VQueue<T>::~VQueue()
{
    // полностью освобождаем занятое пространство
    queueNode *tmp = first;
    while(tmp != NULL)
    {
        first = tmp->nextPtr;
        delete first;
    }
    
    tmp = last;
    while(tmp != NULL)
    {
        last = tmp->nextPtr;
        delete last;
    }
}
 
template< class T >
void VQueue<T>::enqueue( const T &enValue )
{
    queueNode *newPtr = new queueNode;
    if(newPtr != NULL)
    {
        newPtr->data = enValue;
        newPtr->nextPtr = NULL;
        // если очередь пуста, то поместить в голову
        if( isEmpty() )
            first = newPtr;
        else
            last->nextPtr = newPtr;
        last = newPtr;
    }
}
 
template< class T >
T VQueue<T>::dequeue()
{
    queueNode *tmp = first;
    T value = first->data;
    first = first->nextPtr;
    
    if(first == NULL)   // если очередь пуста
        last = NULL;
        
    delete tmp;
    return value;
}
#endif /* V_QUEUE_H */

Yandex
Объявления
26.12.2009, 12:15     Почуму конструктор ругается???
Ответ Создать тему
Опции темы

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