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

Абстрактный класс и использование деструктора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ООП + полиморфизм = wtf? http://www.cyberforum.ru/cpp-beginners/thread345905.html
Есть: Класс A - отец Класс Б - дочерний Класс Ц - дочерный, наследуеться от А(сестра Б) Есть массив типа А, с названием Mass. Он хранит в себе объекты классов Б и Ц. в классе Б есть функция F(). в классе Ц есть функция F() (отличающаяся функционалом).
C++ Сортировка динамических структур методом шелла Дайте пример сортировки динамических структур методом шелла... http://www.cyberforum.ru/cpp-beginners/thread345904.html
C++ Степень двойки
Изучаю программирование. Попытался решить известную задачу. Программа компилируется, но если ввести к примеру 8 она выдает "no". В чем я ошибся? #include<iostream> using namespace std; int main() { int n,k; int flag=false; cout<<"enter a number "; cin>>n;
C++ Вывод массива.
Программа работает, но код... запутаться можно. Есть ли способы попроще? Заранее спасибо. #include <iostream> #include <ctime> using namespace std; int main () { int mass={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
C++ friend не видит приватные поля http://www.cyberforum.ru/cpp-beginners/thread345860.html
Всем привет. Возникла проблема. Есть такой header #include <windows.h> #include <windowsx.h> class Intercept; class Dot { private: FLOAT X,Y,Z;
C++ Помогите с компилятором Вечер добрый... Помогите советом. Не могу скопилировать программу. Использую для этого Dev C++. Когда пробую компилировать, выходит куча ошибок. Мол не найдены такие то сякие библиотеки и так далее.. Как можно решить эту проблему? Может использовать какой нибудь другой компилятор? Чем пользуются профессионалы? подробнее

Показать сообщение отдельно
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
27.08.2011, 20:16     Абстрактный класс и использование деструктора
Есть абстрактный класс
C++
1
2
3
4
5
6
7
8
9
10
11
template <class Vertex, class Edge> class ABCG
{
protected:
    vector <Vertex *> *v;
    vector <Edge *> *e;
public:
    virtual ~ABCG (){};
           virtual Vertex* InsertV( ) = 0;  
    virtual Vertex* InsertV(Vertex* v) = 0; 
    virtual bool DeleteV (Vertex* v) = 0;
};
У него два наследника: L-граф и M-граф.
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
template <class Vertex, class Edge> class LGraph: public ABCG <Vertex, Edge> 
{
private: 
    vector<list<Edge *>> Adjlist;
    bool directed;
    int cnt_v, cnt_e;
public: 
    LGraph()
    {
        cnt_v = 0; cnt_e = 0;
        directed = false;
        v = new vector<Vertex*>;
        e = new vector<Edge*>;
    };
    LGraph (int _v, bool _D )
    {
        cnt_v = _v; cnt_e = 0;
        v = new vector<Vertex*>;
        e = new vector<Edge*>;
        directed = _D;
        for(int i = 0; i < _v; i++)
            InsertV();
    };
    ~LGraph(){delete e, v, Adjlist; };
};
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
template <class Vertex, class Edge> class MGraph: public ABCG <Vertex, Edge>
{
private:
    bool directed;
           vector<vector<Edge*>> matrix;
    int cnt_v, cnt_e;
public: 
    MGraph()
    {
        cnt_v = 0; cnt_e = 0;
        directed = false;
        v = new vector<Vertex*>;
        e = new vector<Edge*>;
    };
    MGraph (int _v, bool _D )
    {
        cnt_v = _v; cnt_e = 0;
        v = new vector<Vertex*>;
        e = new vector<Edge*>;
        for(int i = 0; i < _v; i++)
            InsertV();
        directed = _D;
    };
    ~MGraph(){delete e, v, matrix;}; 
};
Есть класс Граф. В его конструкторе есть указатель на этот абстрактный класс, и инициализируется либо list, либо matrix графом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <class Vertex, class Edge> class Graph
{
protected:
    ABCG <Vertex, Edge> *abstr;
public:
    Graph() 
    {
        abstr = new LGraph<Vertex, Edge>();
    };
 
    Graph (int _V, bool _D, bool _T)
    {
        if(_T == LGRAPH) 
            abstr = new LGraph<Vertex, Edge>(_V, _D);
        else
            abstr = new MGraph<Vertex, Edge>(_V, _D);
 
    };
           ~Graph (){delete abstr;}
};
Но вот с деструктором никак не разберусь. Выдает ошибку выделения памяти.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru