Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблоны (((, ну и синтаксис 
:(
    Опции темы
yaja
Дата 1.4.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 30.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Решил написать простенькую иерархию шаблонов по использованию различных деревьев и обломался (((
Код

// Типа узел
template<class Key, class Data>
class BinaryNode {
private:
  friend class BinaryTree;
protected:
  Key key;
  Data data;
  BinaryNode<Key, Data> *left, *right, *parent;
...
};
// Обычное двоичное дерево
template<class Key, class Data, template<class Key, class Data> class Node = BinaryNode>
class BinaryTree {
protected:
  Node<Key, Data>* root;
public:
  BinaryTree<Key, Data, Node> () 
    : root(0) 
  {}

  virtual ~BinaryTree() {
    delete root;
  }
...
};
// Начинается интересно )))
template <class Key, class Data>
class AVLNode : public BinaryNode<Key, Data> {
private:
  friend class AVLTree;
protected:
  char balance;
public:
  AVLNode<Key, Data> (const Key& k, const Data& d) 
    : BinaryNode<Key, Data> (k, d), balance(0)
  {}
  AVLNode<Key, Data> *LBalance(bool& flag) {
    // что-то делаем и производим обмен данными между вершинами, т.е.
    AVLNode<Key, Data> *Left = left;
    left = left->parent; // выдается ошибка(дескать разные типы)
  }
...
};
// AVL дерево
template <class Key, class Data, template<class Key, class Data> class Node = AVLNode>
class AVLTree : public BinaryTree<Key, Data, Node> {
public:
  AVLTree<Key, Data, Node >() 
    : BinaryTree<Key, Data, Node >()
  {}
...
};


Пытался заставить ето работать, но тщетно. Потом пытался сделать так
Код

template<class Key, class Data, template<class Key, class Data> class Node = BinaryNode>
class BinaryNode {
private:
  friend class BinaryTree;
protected:
  Key key;
  Data data;
  Node<Key, Data> *left, *right, *parent;
};
...

Код

AVLNode<int, char> node(10, 's');

Но тогда мне выдалось такое, что очень давно не видел:
Цитата

  error C2262: 'node' : cannot be destroyed

Понимаю, что так разобраться трудно(могу выслать исходники), но если кто-то врубился о чем идет речь, то помогите.
%)))))
PM MAIL   Вверх
maxim1000
Дата 1.4.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
error C2262: 'node' : cannot be destroyed

первое, что приходит в голову - еще раз проверить, все ли деструкторы находятся в public


--------------------
qqq
PM WWW   Вверх
yaja
Дата 1.4.2005, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 30.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Цитата

первое, что приходит в голову - еще раз проверить, все ли деструкторы находятся в public

К сожалению, да %)))
PM MAIL   Вверх
chipset
Дата 2.4.2005, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Вышли плз код на chipset.cpp smile gmail.com, помойму у тебя какая-то фигня с деструкторами и значениями темплейта по дефолту.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.