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

Ошибка при работе с потомками абстрактного класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск строки в файле http://www.cyberforum.ru/cpp-beginners/thread1055498.html
Здравствуйте. Мне нужна помощь. Как можно осуществить поиск строки(которую пользователь вводит в textBox) в файле. Затем, если строка найдена в файле то открыть Form3, а если не найдена то открыть Form2. По сути у меня только не получается конвертировать из System::String^ в std::string. Я хочу что бы программа именно искала введенную строку в файле, а не считывала последнюю строку.
C++ Заменить главную диагональ матрицы Нужна помощь. Не могу заменить главную диагональ матрицы минимальным элементом, напишите пожалуйста. #include <iostream> #include <ctime> using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread1055495.html
C++ Сами программы нужно сделать, Их решения в паскале, вот ниже приведу их
Сами программы нужно сделать, Их решения в паскале, вот ниже приведу их Задача номер 1 Написать процедуру для вычисление среднего значения для m первых элементов одномерного вещественного массива W. Задача номер 2 В файл ввести текст, закончив его <<#>>. Подсчитать в нём общее количество строк. Задача номер 3 Составить программу последовательного появления на экран фигуры,...
Вывести массив, содержащий длины всех серий исходного массива C++
очень нужна помощь в задаче Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 1). Вывести массив, содержащий длины всех серий исходного массива
C++ Заполнить массив А следующим образом http://www.cyberforum.ru/cpp-beginners/thread1055489.html
ребята,очень помощь нужна Заполнить массив А следующим образом
C++ Ввести целую квадратную матрицу Anxn Ввести целую квадратную матрицу A N на N, вывести её. На главной диагонали найти максимум. Вывести значение и его координаты. На побочной диагонали найти минимум. Вывести значение и его координаты. Заменить эти элементы друг на друга в матрице. Вывести их значения и координаты. Преобразованную матрицу вывести. Прошу помощи! Добавлено через 2 часа 31 минуту Прошу кого-нибудь откликнутся.... подробнее

Показать сообщение отдельно
Xunt
0 / 0 / 0
Регистрация: 30.11.2013
Сообщений: 8
24.12.2013, 22:07     Ошибка при работе с потомками абстрактного класса
Что я пытаюсь сделать: 1. Создать базовый класс бинарного дерева Tree, наследовать от него класс АВЛ-дерева, для которого реализовать вставку и удаление элементов. Узел дерева Tree реализован в классе Node, а для avlTree - в avlNode. Это вроде без проблем.
2. Но кроме этого нужно создать абстрактный (!) класс inform для информационного поля с методами сравнения, которые будут нужны в методе вставки класса avlTree. От абстрактного класса наследовать класс рациональных чисел, которые по сути и будут служить информационным полем (ключом). Сделать все нужно так, чтобы технически от класса inform можно было наследовать любой другой класс, допустим, строк, со своими методами сравнения, и использовать строки как ключ без внесения изменений в остальной код (в avlTree, Tree, Node, avlNode...). Шаблоны использовать нельзя (!).

Вот классы:
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
#pragma once
#include <iostream>
using namespace std;
 
class inform {
public:
    virtual bool operator <(inform&)=0;
    virtual bool operator >(inform&)=0;
    virtual bool operator ==(inform&)=0;
    virtual void Cout ()=0;
    virtual ~inform();
 
};
 
class rat: public inform{
    int a;
    int b;
    void reduct();
public:
    int compare(rat); //сравнить 2 рациональных
    bool operator <(inform&);
    bool operator >(inform&);
    bool operator ==(inform&);
    rat (int, int);
    rat(void);
    ~rat(void);
    void Cout ();
};
 
 
 
 
class Node {
    friend class Tree;
    friend class avlTree;
protected:
    Node * left;
    Node * right;
    inform& inf;
 
 
public: 
    Node (void);
    virtual ~Node (void);
};
 
class Tree{
protected:
    Node * root;
public:
    Tree(void);
    ~Tree(void);
    void preorder();
    void preorder (Node*);
    void inorder (Node*);
    void inorder ();
    void postorder ();
    void postorder (Node*);
    
};
 
 
 
class avlNode: public Node{
    friend class avlTree;
protected:
    int height;
public:
    avlNode(inform&);
    avlNode(void);
    virtual ~avlNode(void);
};
 
class avlTree: public Tree{
public:
    avlTree(void);
    avlTree(inform&);
    ~avlTree(void);
 
    void Delete(Node*);
    void Insert (inform&);
    avlNode* insert (inform&, avlNode*);
    void fixheight (avlNode*);
    unsigned char height(avlNode* );
    int bfactor(avlNode*);
    avlNode* balance(avlNode* );
    avlNode* rotateright(avlNode*);
    avlNode* rotateleft(avlNode*);
    avlNode* findmin(avlNode*);
    avlNode* removemin(avlNode*);
    avlNode* remove(avlNode*, inform&);
    void del (inform&);
    Node* fndmin();
    void Fndmin();
    Node* findmax();
    void Findmax();
};
При компиляции получаю ошибку:
error C2758: 'Node::inf' : must be initialized in constructor base/member initializer list
tree.h(40) : see declaration of 'Node::inf'
Конструктор для Node пустой, если честно, мне кажется, туда нечего писать. И вообще, не нравится требование к inform быть абстрактным, ведь создать экземпляр абстрактного класса нельзя, а для корректного использования в Node это и нужно!

Мне уже начинает казаться, что без шаблонов вторую часть создания не выполнить, но их использовать нельзя.
Может у кого-то есть мысли как избавиться от ошибки?
Весь код во вложении.
Tree.rar
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru