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

Ненужное удаление объектов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с double в в проге по интегрированию ф-ции методом парабол http://www.cyberforum.ru/cpp-beginners/thread994700.html
#include <iostream.h> #include <math.h> #include <conio.h> #include <iomanip.h> double integral(double a, double b, double m, double p, double k, double n) { double h, i, x, f, s1, s2; h=double(b-a)/double(n); s1=s2=0; for(i=0; i<=n-1; i++) { x=double(i)*h+a+h/2.0;
C++ Уменьшение времени работы программы Добрый вечер. Решил задачу, и решил прогнать по ********. Программа заваливается по времени выполнения, выходит 2.5 секунд, в идеале должно быть не меньше одной. Помогите плиз. Вот задача: Известный художник решил написать новый шедевр. После многих дней усердной работы он захотел исследовать свое творение. Художник вспомнил, что картина писалась следующим образом: сначала был взят белый... http://www.cyberforum.ru/cpp-beginners/thread994695.html
C++ Напишите программу с if
Предположим, что A говорит: "Или я лжец, или два плюс два - пять". К какому заключению можно прийти на основании этого утверждения?
поскажите или напишите программу с циклом if( C++
29. Предположим, что A говорит: "Или я лжец, или B рыцарь". Кто из двух персонажей A и B рыцарь и кто лжец?
C++ Переменная в TextBox http://www.cyberforum.ru/cpp-beginners/thread994678.html
пишу в TextBox переменную: float p=1; textBox2->Text = p.ToString(); но допустим у меня g=g+1;
C++ Задача по программированию(неудачный перевод кода) Во время экперимента Накодиллы было случайно получено сообщение инопланетян, содержащее формулу вида A + B = C. Общественности стало интересно, какую же систему счисления используют инопланетяне. Так как внеземная цивилизация была достаточно развита, чтобы отправить межпланетное сообщение, Накодилла предположил, что основание системы счисления довольно мало. Требуется написать программу,... подробнее

Показать сообщение отдельно
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 200
01.11.2013, 23:36  [ТС]     Ненужное удаление объектов
Нет список не локальный, список - член класса, проблема как я понял заключается в том что у меня создается объект polygon которому передаются ссылки на объекты из списка pointmass, после окончания цикла, объект удаляется и пытается удалить точки которые в pointmass.... ну по крайней мере прога рушится в деструкторе polygon.
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
for(int i=0;i<720;i+=vertstep)
        for(int j=0;j< 360;j+=horstep)
        {
            x=(R+inc*i+r*qCos(j*180/M_PI))*qSin(i*180/M_PI);
            y=(R+inc*i+r*qCos(j*180/M_PI))*qCos(i*180/M_PI);
            z=r*qSin(j*180/M_PI)+step*i;
            QVector4D Point3D(x,y,z,1);
            Point3D = Point3D * TransformMatrix;
            QPointF Point2D(Point3D.x(),Point3D.y());
            PointList.append(Point2D);
            if(PointList.count()>interval)
            {
                pos=PointList.count()-interval-1;
                now = PointList.count()-1;
                if(!(now+1 % interval ==0) )
                {
                    Face face1(&PointList[now],&PointList[pos]);
                    Face face2(&PointList[now],&PointList[pos+1]);
                    Face face3(&PointList[pos],&PointList[pos+1]);
                    FaceList.append(face1);
                    FaceList.append(face2);
                    FaceList.append(face3);
                    MyPolygon p(&PointList[now],&PointList[pos],&PointList[pos+1]);
                    p.FaceMass[0]=&face1;
                    p.FaceMass[1]=&face2;
                    p.FaceMass[2]=&face3;
                    PolygonList.append(p);
                }
polygon.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <face.h>
#include <QVector4D>
 
class MyPolygon
{
public:
    MyPolygon();
    MyPolygon(QPointF *point1,QPointF *point2,QPointF *point3);
    MyPolygon(const MyPolygon &p);
    Face **FaceMass;
    QPointF **PointMass;
    ~MyPolygon();
    static int Dim;
};
polygon.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
MyPolygon::MyPolygon(QPointF *point1,QPointF *point2,QPointF *point3)
{
    FaceMass = new Face *[Dim];
    PointMass = new QPointF *[Dim];
    PointMass[0]=point1;
    PointMass[1]=point2;
    PointMass[2]=point3;
}
 
MyPolygon::MyPolygon()
{
    FaceMass = new Face *[Dim];
    PointMass = new QPointF *[Dim];
}
 
MyPolygon::MyPolygon(const MyPolygon &p)
{
    this->Dim = p.Dim;
    this->FaceMass = new Face*[Dim];
    this->PointMass = new QPointF *[Dim];
    for(int i=0;i<Dim;++i)
    {
        FaceMass[i]= new Face(*(p.FaceMass[i]));
        PointMass[i]= new QPointF(*(p.PointMass[i]));
    }
}
 
int MyPolygon::Dim=3;
 
MyPolygon::~MyPolygon()
{
    for(int i=0;i<Dim;++i)
    {
        delete FaceMass[i];
        delete PointMass[i];
    }
    delete [] FaceMass;
    delete [] PointMass;
}
 
Текущее время: 23:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru