С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 09.04.2018
Сообщений: 8
1

Ошибка в классе

13.04.2018, 11:54. Показов 968. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:
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
#include <iostream>
#include <vector>
 
using namespace std;
 
typedef long long int ll;
 
template<class Type>
class acg
{
    typedef long long int ll;
 
public:
    template<class T>
    struct _cell {
        T acg;
        vector<ll> childrens;
        ll v;
    };
 
    struct _acg {
        vector<_cell<_acg*>> cells;
    };
 
    template<class T>
    _cell<T> cell(T a, ll b) {
        _cell<T> rez;
 
        rez.acg = a;
        rez.v = b;
 
        return rez;
    }
 
    _acg A;
 
    void _insert(_acg*& a, ll p, ll v) {
        if (a == NULL) {
            a = new _acg;
            a->cells.push_back(cell<_acg*>(NULL, v));
 
            return;
        }
 
        ll f_i = -1;
        bool flag_break = false;
        bool flag_null = true;
 
        for (ll i = 0; i < a->cells.size(); i++) {
            for (ll j = 0; j < a->cells[i].childrens.size(); j++) {
                if (a->cells[i].childrens[j] == p) {
                    f_i = i;
                    flag_break = true;
                    flag_null = false;
                    break;
                }
            }
 
            if (a->cells[i].v == p) {
                f_i = i;
                break;
            }
 
            if (flag_break)
                break;
        }
 
        if (f_i == -1) {
            _DEBUG_ERROR("parent not found");
            return;
        }
 
        if (flag_null) {
 
            if (a->cells[f_i].childrens.size() == 0)
                a->cells[f_i].acg = new _acg;
 
            a->cells[f_i].childrens.push_back(v);
            a->cells[f_i].acg->cells.push_back(cell<_acg*>(NULL, v));
 
            return;
        }
 
        a->cells[f_i].childrens.push_back(v);
        _insert(a->cells[f_i].acg, p, v);
    }
 
    void insert(ll p, ll v) {
 
        if (p == 0) {
            A.cells.push_back(cell<_acg*>(NULL, v));
        }
        else { // если закомментировать следующие 4 строчки ошибка пропадает, скорее всего в них проблема 
            _acg* _rez;
            _rez = &A;
            _insert(_rez, p, v);  
            A = *_rez;
        }
 
    }
 
};
 
int main() {
    acg<ll> a;
    a.insert(0, 5);
    a.insert(0, 6);
    a.insert(0, 7);
    a.insert(7, 8);
    return 0;
}
При компиляции возникает ошибка:C2513 acg<ll>: нет переменных, объявленных перед "="
PS Я до этого реализовал без класса и все работало.
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
131
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
typedef long long int ll;
 
template<class T>
struct _cell {
    T acg;
    vector<ll> childrens;
    ll v;
};
 
template<class T>
_cell<T> cell(T a, ll b) {
    _cell<T> rez;
 
    rez.acg = a;
    rez.v = b;
 
    return rez;
}
 
struct _acg {
    vector<_cell<_acg*>> cells;
};
 
void _insert(_acg*& a, ll p, ll v) {
    if (a == NULL) {
        a = new _acg;
        a->cells.push_back(cell<_acg*>(NULL, v));
 
        return;
    }
 
    ll f_i = -1;
    bool flag_break = false;
    bool flag_null = true;
 
    for (ll i = 0; i < a->cells.size(); i++) {
        for (ll j = 0; j < a->cells[i].childrens.size(); j++) {
            if (a->cells[i].childrens[j] == p) {
                f_i = i;
                flag_break = true;
                flag_null = false;
                break;
            }
        }
 
        if (a->cells[i].v == p) {
            f_i = i;
            break;
        }
 
        if (flag_break)
            break;
    }
 
    if (f_i == -1) {
        _DEBUG_ERROR("parent not found");
        return;
    }
 
    if (flag_null) {
 
        if (a->cells[f_i].childrens.size() == 0)
            a->cells[f_i].acg = new _acg;
 
        a->cells[f_i].childrens.push_back(v);
        a->cells[f_i].acg->cells.push_back(cell<_acg*>(NULL, v));
 
        return;
    }
 
    a->cells[f_i].childrens.push_back(v);
    _insert(a->cells[f_i].acg, p, v);
}
 
_acg insert(_acg a, ll p, ll v) {
    _acg rez = a;
 
    if (p == 0) {
        rez.cells.push_back(cell<_acg*>(NULL , v));
    }
    else {
        _acg* _rez;
        _rez = &rez;
        _insert(_rez, p, v);
 
        rez = *_rez;
    }
 
    return rez;
}
 
void print(_acg*& a) {
    if (a == NULL) {
        return;
    }
 
    for (ll i = 0; i < a->cells.size(); i++) {
        cout << a->cells[i].v << ' ';
    }
 
    cout << endl;
 
    for (ll i = 0; i < a->cells.size(); i++) {
        print(a->cells[i].acg);
    }
}
 
int main() {
    _acg a;
 
    ll temp1, temp2;
    while (true) {
        cin >> temp1 >> temp2;
        if (temp1 == -1)
            break;
 
        a = insert(a, temp1, temp2);
    }
 
    _acg* b;
    b = &a;
    print(b);
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2018, 11:54
Ответы с готовыми решениями:

Ошибка в классе
#include &quot;Eliptic_arc.h&quot; void Eliptic_arc::set_val(char name, int val) { } int...

Ошибка в классе
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; class Element...

Ошибка в классе
#pragma once #include &lt;iostream&gt; using namespace std; class Drob { private: int num;...

Ошибка в классе
Не могу понять где ошибка вот код: #include &lt;iostream&gt; using namespace std; class time { ...

3
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
13.04.2018, 13:05 2
Цитата Сообщение от Andreykuzn56 Посмотреть сообщение
_acg A;
Внутри класса нельзя объявлять экземпляр класса.
Разберитесь, что у Вас является членами класса, а что нет.
1
0 / 0 / 1
Регистрация: 09.04.2018
Сообщений: 8
13.04.2018, 13:25  [ТС] 3
Так класс у меня acg , а у А тип _acg
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
13.04.2018, 14:14 4
Лучший ответ Сообщение было отмечено Andreykuzn56 как решение

Решение

Цитата Сообщение от Andreykuzn56 Посмотреть сообщение
class acg
{
* * typedef long long int ll;
public:
* * template<class T>
* * struct _cell {
* * * * T acg;
почему название класса совпадает с именем переменной?
2
13.04.2018, 14:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2018, 14:14
Помогаю со студенческими работами здесь

Ошибка в классе
Есть мойкласс. Когда создаю объект этого класса, проэкт не компилируется из-за ошибки: мойкласс...

Ошибка в классе
Доброго времени суток! Недавно прочитал тему классы, посмотрел и инете видео-урок и решил закрепить...

Ошибка в классе
Добрый вечер! Кому не сложно помогите, пожалуйста, найти ошибку! Не правильно прибавляет вектора....

Ошибка в классе
У меня есть класс Player и класс Poker Прототип Player class Player { protected: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru