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

Удаление указателя на объект класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка масива методом выбора http://www.cyberforum.ru/cpp-beginners/thread814267.html
Подскажите пожалуйста, почему компилятор жалуется на мою 34 строку (где я переношу функцию в main). #include <iostream> using namespace std; template< class T > void selectSort(T* arr, int size) {
C++ Что такое многоразрядное число? (Создать класс ПАРА целых чисел) Объясните пожалуйста что такое многоразрядное число, и его старшая и младшая часть, если можно наведите пример. http://www.cyberforum.ru/cpp-beginners/thread814266.html
C++ Представить n в виде произведения простых чисел
Нужно найти каждое значение p^a, если дано n. Помогите, пожалуйста.
C++ Найти ошибки! Если не сложно подскажите)
в этой программке упаковки кода есть ошибка, какая не пойму #include <stdio.h> int main(void){ char с; /* код стану */ char f; /* ознака помилки */ char b; /* ознака зайнятості */ unsigned char n; /* кількість байт */ unsigned int UnitStateWord; /* слово стану */ /* введення складових частин */ printf("Введіть код стану (0 - 31) >");
C++ Класс: Создать производные классы StraightLine, Ellipse, Hyperbola http://www.cyberforum.ru/cpp-beginners/thread814243.html
Создать абстрактный базовый класс Lines с виртуальной функцией f(x). Создать производные классы StraightLine, Ellipse, hyperbola в которых данная функция переопределена. В функции main определить массив указателей на абстрактный класс, которым присваиваются адреса различных объектов. Уравнение прямой: y=ax+b , эллипса: x2/a2+y2/b2=1, гиперболы: x2/a2-y2/b2=1 Добавлено через 20 минут поправка...
C++ Массив из неповторяющихся элементов исходного массива Рандомно задается массив. Необходимо составить массив из неповторяющихся элементов исходного массива, сохраняя порядок их следования. Желательно еще ввести переменную которая будет показ. длину нового массива. Я пытался сделать, но не получилось. Ткните носом где у меня ошибка и как её исправить. Других библиотек кроме написанных не использовать, работать только с массивами. #include "stdafx.h"... подробнее

Показать сообщение отдельно
yol
10 / 10 / 0
Регистрация: 13.10.2012
Сообщений: 155
21.03.2013, 00:55  [ТС]     Удаление указателя на объект класса
Ok.
shapes.h

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
#include <iostream>
#include <locale>
#include <conio.h>
 
using namespace std;
 
struct point    //точка
{
    float x;
    float y;
};
 
class shapes    //базовый класс (фигуры)
{
protected:
    point center;   //центральная точка фигур
    float diag;     //диагональ (1-я для ромба)
 
public:
    shapes();
    ~shapes();
};
 
class square: public shapes //квадрат - производный от shapes
{
protected:
    point points[4];    //точки
 
public:
    square();
    square(point p, float d=5);
    ~square();
 
};
 
class rhomb: public square  //ромб - производный от square
{
private:
    float diag2;    //вторая диагональ робма
 
public:
    rhomb();
    ~rhomb();
};
 
class triangle: public shapes   //треугольник - производный от shapes
{
private:
    point points[3];    //точки
 
public:
    triangle();
    ~triangle();
 
};
 
class sector: public shapes //сектор - производный от shapes
{
private:
    point points[3];    //точки
    float angle;    //угол поворота
 
public:
    sector();
    ~sector();
};


impl.cpp

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
#include "shapes.h"
//_______________SHAPES_______________
 
shapes::shapes()
{
    cout<<"\nВызов \"shapes()\";"<<endl;
};
 
shapes::~shapes()
{
    cout<<"\nВызов \"~shapes()\";"<<endl;
};
 
 
//_______________SQUARE_______________
 
square::square()
{
    cout<<"\nВызов \"square()\";"<<endl;
    point p;
    p.x=10;
    p.y=10;
    float d=10;
 
    points[1].x=p.x-d;
    points[1].y=p.y-d;
 
    points[2].x=p.x-d;
    points[2].y=p.y+d;
 
    points[3].x=p.x+d;
    points[3].y=p.y+d;
 
    points[4].x=p.x+d;
    points[4].y=p.y-d;
};
 
square::square(point p, float d)
{
    cout<<"\nВызов \"square(point, float)\";"<<endl;
    points[1].x=p.x-d;
    points[1].y=p.y-d;
 
    points[2].x=p.x-d;
    points[2].y=p.y+d;
 
    points[3].x=p.x+d;
    points[3].y=p.y+d;
 
    points[4].x=p.x+d;
    points[4].y=p.y-d;
};
 
square::~square()
{
    cout<<"\nВызов \"~square(point, float)\";"<<endl;
};
 
 
//_______________RHOMB_______________
 
rhomb::rhomb()
{
    cout<<"\nВызов \"rhomb()\";"<<endl;
};
 
rhomb::~rhomb()
{
    cout<<"\Вызов \"~rhomb()\";"<<endl;
};
 
 
//_______________TRIANGLE_______________
 
triangle::triangle()
{
    cout<<"\nВызов \"triangle()\";"<<endl;
};
 
triangle::~triangle()
{
    cout<<"\Вызов \"~triangle()\";"<<endl;
};
 
 
//_______________SECTOR_______________
 
sector::sector()
{
    cout<<"\nВызов \"sector()\";"<<endl;
};
 
sector::~sector()
{
    cout<<"\Вызов \"~sector()\";"<<endl;
};


main.cpp

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
#include "shapes.h"
 
void printMenu();   //вывести меню выбора фигуры
int main()
{
    int check, shapeNum;
    shapes *ptr=0;  //указатель базового типа shapes, на объект производного класса
    point p;    //центр фигуры
    float d;    //диагональ (радиус) фигуры
    
    //инициализация первоначальных данных фигуры
    p.x=3;  //центральная точка x
    p.y=2;  //центральная точка y
    d=4;    //диагональ
    
    setlocale (LC_ALL, "rus");
    while (1)
    {
        printMenu();    //меню выбора фигуры
        cin>>check;
    
        switch(check)   //создание фигуры
        {
        case 1:
            //ptr=new square();     //p=[10, 10]; d=10
            //ptr=new square(p);    //d=5
            ptr=new square(p, d);   //p=[3, 2]; d=4
            break;
        case 2:
            ptr=new rhomb;
            break;
        case 3:
            ptr=new triangle;
            break;
        case 4:
            ptr=new sector;
            break;
        case 0:
            check=0;
            break;
        default:
            ptr=new square;
            check=1;
            break;
        };
 
        if (check==0)   //выбран выход
            break;
 
        //switch(check) //выбор операции
        //{
        //case 1:
 
 
 
        delete ptr;
    };
    cout<<"\nВыход из программы!"<<endl;
    getch();
    return 0;
};
 
void printMenu()    //вывод меню выбора фигуры
{
    cout<<"\nВыберите фигуру:";
    cout<<"\n1. Квадрат;";
    cout<<"\n2. Ромб;";
    cout<<"\n3. Треугольник;";
    cout<<"\n4. Сектор;";
    cout<<"\n\n0. Выход.";
    cout<<"\n\n>: ";
};
 
Текущее время: 16:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru