Форум программистов, компьютерный форум 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, 02:01  [ТС]     Удаление указателя на объект класса
Цитата Сообщение от alsav22 Посмотреть сообщение
Студия 10. А у тебя?
Тоже.
Если не сложно, мог бы еще раз проверить? Может быть я недоглядел

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
67
#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();
    virtual ~shapes();
};
 
class square: public shapes //квадрат - производный от shapes
{
protected:
    point points[3];    //точки
 
public:
    square();
    square(point p, float d=5);
    virtual ~square();
 
};
 
class rhomb: public square  //ромб - производный от square
{
private:
    float diag2;    //вторая диагональ робма
 
public:
    rhomb();
    rhomb(point p, float d=5, float d2=7);
    ~rhomb();
};
 
class triangle: public shapes   //треугольник - производный от shapes
{
private:
    point points[2];    //точки
 
public:
    triangle();
    ~triangle();
 
};
 
class sector: public shapes //сектор - производный от shapes
{
private:
    point points[2];    //точки
    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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#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[0].x=p.x-d;
    points[0].y=p.y-d;
 
    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;
};
 
square::square(point p, float d)
{
    cout<<"\nВызов \"square(point, float)\";"<<endl;
    points[0].x=p.x-d;
    points[0].y=p.y-d;
 
    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;
};
 
square::~square()
{
    cout<<"\nВызов \"~square()\";"<<endl;
};
 
 
//_______________RHOMB_______________
 
rhomb::rhomb()
{
    cout<<"\nВызов \"rhomb()\";"<<endl;
    point p;
    p.x=10;
    p.y=10;
    float d=10, d2=12;
 
    points[0].x=p.x-d;
    points[0].y=p.y;
 
    points[1].x=p.x;
    points[1].y=p.y+d2;
 
    points[2].x=p.x+d;
    points[2].y=p.y;
 
    points[3].x=p.x;
    points[3].y=p.y-d2;
};
 
rhomb::rhomb(point p, float d, float d2)
{
    cout<<"\nВызов \"rhomb(point, float, float)\";"<<endl;
    points[0].x=p.x-d;
    points[0].y=p.y;
 
    points[1].x=p.x;
    points[1].y=p.y+d2;
 
    points[2].x=p.x+d;
    points[2].y=p.y;
 
    points[3].x=p.x;
    points[3].y=p.y-d2;
};
 
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
73
74
75
76
#include "shapes.h"
 
void printMenu();   //вывести меню выбора фигуры
int main()
{
    int check, shapeNum;
    shapes *ptr=0;  //указатель базового типа shapes, на объект производного класса
    point p;    //центр фигуры
    float d, d2;    //диагонали (радиус) фигуры
    
    //инициализация первоначальных данных фигуры
    p.x=3;  //центральная точка x
    p.y=2;  //центральная точка y
    d=4;    //диагональ
    d2=6;   //вторая диагональ (для ромба)
    
    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);    //p=[3, 2]; d=5
            //ptr=new square(p, d); //p=[3, 2]; d=4
            break;
        case 2:
            //ptr=new rhomb;            //p=[10, 10]; d=10; d2=12;
            ptr=new rhomb(p);           //p=[3, 2]; d=5; d2=7;
            //ptr=new rhomb(p, d);      //p=[3, 2]; d=4; d2=7;
            //ptr=new rhomb(p, d, d2);  //p=[3, 2]; d=4; d2=6;
            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>: ";
};
 
Текущее время: 06:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru