Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
24 / 24 / 3
Регистрация: 17.05.2011
Сообщений: 141

Помогите пожалуйста "error C2143:" и "error C4430:"

21.11.2011, 09:56. Показов 2977. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
помогите пожалуйста понять как правильно сделать оъявление вот такой штуки...
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
class bst{
 
    struct et{
        et* l;
        et* r;
        K k;
        T v;
        et(et&);
        et(K&,T&);
        inline et*& link(bool);
 
    };
 
void del();
et* joni(et*,et*);
public:
/*что-то еще, но вопросов пока не возникло*/
};
 
template<typename T,typename K>
inline et*& bst<T,K>::et::link(bool variants){if(variants)return r;return l;}//вот здесь ошибка
 
template<typename T, typename K>
bst<T, K>::et* bst<T, K>::joni( et* a,et* b){/*тело метода*/}//вот здесь ошибка, кроме этого еще сообщение о том, что зависимое имя не является типом
 
template<typename T,typename K>
void bst<T,K>::del(){/*тело метода*/}//здесь все норм
очевидно, что это из-за вложеной структуры...т.е. из-за того что он видимо не понимет что нужно возвращать...
подскажите как объявить, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2011, 09:56
Ответы с готовыми решениями:

error C4430, error C2143
error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию error C2143:...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'"
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); while (x){ int c = x % 10; ...

Error C2143: syntax error : missing ';' before '.'
#include &lt;fstream&gt; #include &lt;iostream&gt; using std::cin; using std::cout; using std::endl; using std::ifstream; using...

10
Кошковед
 Аватар для co6ak
521 / 509 / 63
Регистрация: 12.04.2010
Сообщений: 1,390
21.11.2011, 10:03
я не силен в таких вопросах, но первое что приходит на ум - сделать 2 класса и подружить их друг с другом вместо структуры
0
24 / 24 / 3
Регистрация: 17.05.2011
Сообщений: 141
21.11.2011, 10:19  [ТС]
C++
1
2
3
4
5
template<typename T, typename K>
typename bst<T,K>::et* bst<T, K>::joni
 
//вот отно в чем дело!
typename bst<T,K>::et* //вполне себе как тип воспринимается)
0
Заблокирован
21.11.2011, 10:20
Что это?

Цитата Сообщение от Глупец Посмотреть сообщение
et* joni(et*,et*);
Что вы пытались этой записью создать/объявить?

Вы считаете, это нормально, вот так делать?
0
24 / 24 / 3
Регистрация: 17.05.2011
Сообщений: 141
21.11.2011, 10:23  [ТС]
C++
1
et* joni(et*,et*);//метод реализующий рекурсивный алгоритм объединения деревьев
да, считаю нормальным, ибо в задании не указано, что мне должны нравится предложенные алгоритмы...
0
Заблокирован
21.11.2011, 10:32
C++
1
2
template<typename T, typename K>
bst<T, K>::et* bst<T, K>::joni( et* a,et* b){/*тело метода*/}//вот здесь ошибка, кроме этого еще сообщение о том, что зависимое имя не является типом
попробуйте переписать так:
C++
1
2
template<typename T, typename K>
typename bst<T, K>::et* bst<T, K>::joni( et* a,et* b){/*тело метода*/}
Добавлено через 1 минуту
возможно компилятор просто не может понять - звёздочка там, это умножение, или указатель
0
24 / 24 / 3
Регистрация: 17.05.2011
Сообщений: 141
21.11.2011, 10:33  [ТС]
спасибо, посмотри сообщение чуть повыше 13:19...
пологаю тема закрыта)
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
21.11.2011, 10:37
Попробуйте typedef'ить имена типов. Помогает не запутаться.

Не по теме:

Это такая форма обфускации, прививаемая со школьной скамьи. Считается, что человек, который хочет помочь, будет разбираться столько, сколько нужно. Да еще и мысли читает.

Пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef int v;
 
struct e {
  v i;
  v* p;
};
 
struct z {
  e &ni
  e *nl;
};
 
int main(int argc, char *argv[]) {
  z x;
  x.nl->p = new v; // тут ашыпка, хэлп
}

0
24 / 24 / 3
Регистрация: 17.05.2011
Сообщений: 141
21.11.2011, 10:45  [ТС]
typedef int v;

struct e {
v i;
v* p;
};

struct z {
e &ni//нет ;
e *nl;
//нет конструктора...и нужен оязательно с парамтром, чтоб ссылку инициализировать...
};

int main(int argc, char *argv[]) {
z x;//да, и "тут ашипка, хелп"
x.nl->p = new v; // тут ашыпка, хэлп, а не тут
}

это то, что каксается формальной грамматики...
0
Заблокирован
21.11.2011, 14:29
Цитата Сообщение от Глупец Посмотреть сообщение
Здравствуйте.
помогите пожалуйста понять как правильно сделать оъявление вот такой штуки...
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
class bst{
 
    struct et{
        et* l;
        et* r;
        K k;
        T v;
        et(et&);
        et(K&,T&);
        inline et*& link(bool);
 
    };
 
void del();
et* joni(et*,et*);
public:
/*что-то еще, но вопросов пока не возникло*/
};
 
template<typename T,typename K>
inline et*& bst<T,K>::et::link(bool variants){if(variants)return r;return l;}//вот здесь ошибка
 
template<typename T, typename K>
bst<T, K>::et* bst<T, K>::joni( et* a,et* b){/*тело метода*/}//вот здесь ошибка, кроме этого еще сообщение о том, что зависимое имя не является типом
 
template<typename T,typename K>
void bst<T,K>::del(){/*тело метода*/}//здесь все норм
очевидно, что это из-за вложеной структуры...т.е. из-за того что он видимо не понимет что нужно возвращать...
подскажите как объявить, пожалуйста.
Ваш код не должен компилироваться, так как класс bst определен как не шаблонный. Поэтому вы не можете к нему применять аргументы шаблона, как вы это деаете ниже

C++
1
2
template<typename T,typename K>
inline et*& bst<T,K>::et::link(bool variants){if(variants)return r;return l;}//вот здесь ошибка
0
Заблокирован
21.11.2011, 14:32
Цитата Сообщение от Сыроежка Посмотреть сообщение
так как класс bst определен как не шаблонный.
Я понял так, что он просто скопипастил неправильно) Забыл шапку)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2011, 14:32
Помогаю со студенческими работами здесь

Error C4430, error C2065
main.cpp #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;diophantine.h&quot; using namespace std; void main() { ...

Error C4430 с шаблоном
Доброго времени суток. Не могу разобраться, в чем проблема. Хелп :) Выдаёт ошибку source.cpp(27): error C4430: missing type specifier...

error C4430 people
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #define pi 3.1415927 main () { double r,h,l,s,v,sbok,spoln; printf(&quot;Vvedite radius...

Подскажите что за ошибка - error C4430:
#include &quot;iostream&quot; #include &quot;math.h&quot; using namespace std; #define n 5 main() { int A,i,count, p = 1; cout&lt;&lt;&quot;Введите...

Error C4430: отсутствует спецификатор типа - предполагается int
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;stdio.h&gt; using namespace std; main() { const int m=5; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru