Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Progr
2 / 2 / 0
Регистрация: 17.03.2013
Сообщений: 25
#1

Шаблоны классов: непонятная ошибка в одном из методов класса - C++

17.03.2013, 18:46. Просмотров 371. Ответов 3
Метки нет (Все метки)

Задача создать шаблон двоичного дерева поиска. В методе удаления узла IntelliSense выдает ошибку: ссылается на if и пишет: "требуется объявление". Как бы я чо не менял ошибка одна и та же. помогите, вот код:

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
template <class T> int BinST<T> :: del(int key, BSTNode *root)
{
    if (empty())
        return -1;
    if (key > root -> getKey())
        return del(key, root -> getRight());
    if (key < root -> getKey())
        return del(key, root -> getLeft());
    // Иначе key точно равен root -> key
    int numOfChildren;
    if (numOfChildren == 0) // Здесь ошибка!!!
        root -> DELETE();
    if (numOfChildren == 1) // и здесь
    {
        BSTNode *child;
        if (root -> left == NULL)
            child = root -> getRight();
        else
            child = root -> getRight();
        root -> getRight() = child -> getRight();
        root -> getLeft() = child -> getLeft();
        root -> setKey(child -> getKey());
        root -> setData(child -> getDATA());
        return child -> DELETE();
    }
    if (numOfСhildren == 2)
    {
        BSTNode *ML = root -> getML(root -> getRight());
        root -> setKey( ML -> getKey() );
        root -> setData( ML -> getDATA() );
        return del( ML->getKey(), ML );
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 18:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблоны классов: непонятная ошибка в одном из методов класса (C++):

Шаблоны методов класса - C++
Здравствуйте, подскажите, можно ли в С++ сделать шаблон отдельного метода класса ? т.е. нужно что-то типа подобного: class MyClass ...

Шаблоны классов, перегрузка operator<< класса ostream - C++
Не компилируется программа. fatal error: 1 unresolved externals Как правильно определить operator&lt;&lt; ??? #include &lt;iostream&gt; ...

Шаблоны классов. Ошибка параметра по умолчанию - C++
Есть template &lt;class data_type&gt; class List; и typedef unsigned char point_dist; template &lt;class data_type = point_dist&gt; class...

ошибка при компиляции проги, использущей шаблоны классов - C++
Возникла ошибка при компиляции проги, использующей шаблоны. Ошибка - undefined symbol /*...*/ in module main.cpp (линковщик не может...

Шаблоны классов. Ошибка `unable to match function definition to an existing declaration` - C++
#pragma once template &lt;typename T = int&gt; class SingleBuffer { public: SingleBuffer(T fd): field(fd), state(true){} ...

Ошибка методов класса - C++
#include &quot;Header.h&quot; #include &lt;iostream&gt; int main() { using ms::List; List&lt;int&gt; mylist; // 1 int val = 7.1; ...

3
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
17.03.2013, 18:50 #2
int numOfChildren;
действительно требуется объявление
int numOfChildren = 0;
0
Progr
2 / 2 / 0
Регистрация: 17.03.2013
Сообщений: 25
17.03.2013, 18:58  [ТС] #3
я это пробовал: все равно не действует
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
17.03.2013, 19:04 #4
конечно, не будет действовать. нужно с numOfChildren что-то ещё делать. Если мы просто объявим
int numOfChildren = 0;
то само собой будет выполняться тело первого оператора if(numOfChildren == 0). Компилятор не будет писать за нас код.
0
17.03.2013, 19:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2013, 19:04
Привет! Вот еще темы с ответами:

Непонятная ошибка при разносе метода из кода класса - C++
Не могу понять от чего происходит ошибка. Создал класс в VS 2008, создал метод демонстрации. Пока этот метод находится в теле класса, всё...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

непонятная конструкция, шаблоны - C++
столкнулся со странной конструкцией template&lt;typename C&gt; static One test(int C::*); в template&lt;typename T&gt; class IsClassT { ...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов - C++
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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