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

криво работает коеструктор копии производного класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ханойская башня- тесты http://www.cyberforum.ru/cpp-beginners/thread822009.html
Переместить m дисков с одного из трех стержней на другой, соблюдая: 1) диски можно перемещать с одного стержня на другой только по одному; 2) нельзя класть больший диск на меньший. Вход: текстовый файл, в котором записано число m. Выход: текстовый файл, описывающий перемещения дисков. Пример: in.txt: 2; out.txt: 1->2; 1->3; 2->3 Тестирование: протестировать программу на следующих данных...
C++ MPI передача матриц в группу процессов Нужно передать 9 матриц в группу процессов. Использовал MPI_Scatter для предварительно созданной группы. Вылетало с ошибкой об неправильном коммуникаторе. Решил использовать MPI_COMM_WORLD. Но теперь просто на принимающей стороне массив не содержит правильных данных. Как можно передать 9 матриц из основного процесса в другие? Т.е. матрица 1 к процессу 1, матрица 2 процессу 2... http://www.cyberforum.ru/cpp-beginners/thread821980.html
C++ как усовершенствовать студ.актив при помощи С++
Учусь на первом курсе, если честно, не особо смыслю в программировании :) Веду активную жизнь, состою в студенческом активе, по этому поводу препод меня подкалывает постоянно!Так вот, можете подсказать, как усовершенствовать студ.актив при помощи С++ :) Жду самых интересных идей!Заранее спасибо!
C++ Дописать в конец a.jpeg некий секретный текст. Вывести этот текст на экран
Как мне стало известно все .jpeg оканчиваются на маркер FFD9. Его мы и будем искать при выводе результата. Сначала откроем файл на дополнение "ab". Дополним Выглядеть функция будет так: void add(???????) { int n; char a; FILE *f; f = fopen("a.jpg","ab"); printf("\n Input n: "); scanf("%d",&n); printf("Input secret text: \n");
C++ Как закончить ввод в итератор ввода для потока http://www.cyberforum.ru/cpp-beginners/thread821962.html
По задумке в представленном ниже коде вводятся слова в консоль, потом как то ввод прекращается и программа дальше выполняет свои подсчеты и выводит результат. Что я должен нажать в консоли, что бы прекратить ввод? А то у меня получается бесконечный ввод.. нажимаю Enter переводит строку и продолжает читать, что я ввожу #include <string> #include <map> #include <iostream> #include <iterator>...
C++ Написать консольное приложение, которое позволяет рассчитывать длину гипотенузы по теореме Пифагора. Напишите листинг программы с комментариями. в С++ 6.0. Вот задание: " Написать консольное приложение, которое позволяет рассчитывать длину гипотенузы по теореме Пифагора. Длины катетов должны вводится пользователем с клавиатуры. Расчет должен производиться с помощью функции." подробнее

Показать сообщение отдельно
ТОрчОК
Заблокирован

криво работает коеструктор копии производного класса - C++

29.03.2013, 13:34. Просмотров 264. Ответов 4
Метки (Все метки)

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
using namespace std;
#include <conio.h>
class building
{
protected:
    int **A, level, flat;
public:
    building(){};
    building(int l, int f);
    building(const building &ob);
    ~building();
    void show();
    void function(int m,int n);
    int get(int &i,int &j);
};
class B:public building
{
    int *p;
    int a,b,c;
public:
    B(){};
    B(int a1,int b1,int c1);
    ~B();
    B(const B &ob);
    void show1(building ob);
    int get1(int i);
};
building::building(int l, int f)
{
function(l,f);
}
building::building(const building &ob)
{
    function(ob.level,ob.flat);
    for(int i=0;i<ob.level;i++)
    {
        for(int j=0;j<ob.flat;j++)
        {
            A[i][j]=ob.A[i][j];
        }
    }
}
building::~building()
{
    for(int i=0;i<level;i++)
    {
        delete []A[i];
    }
    delete []A;
}
void building::show()
{
    int k=0;
    for(int i=0;i<level;i++)
    {
        cout<<"этаж №"<<i+1<<" ";
        cout<<endl;
        for(int j=0;j<flat;j++)
        {
            k++;
            A[i][j]=rand()%36+64;
            cout<<"квартира №"<<k<<": ";
            cout<<"площадь"<<"-";
            cout<<A[i][j]<<" кв.м";
            cout<<endl;
        }
        cout<<endl;
    }
}
void building::function(int m,int n)
{
    A=new int*[m];
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
        A[i]=new int[n];
        }
    }
    level=m;
    flat=n;
}
int building::get(int &i,int &j)
{
    return A[i][j];
}
B::B(int a1,int b1,int c1):building(a1,b1)
{
    a=a1;
    b=b1;
    p=new int [c1];
    c=c1;
}
B::B(const B &ob)
{
    c=ob.c;
    p=new int [ob.c];
    for(int i=0;i<ob.c;i++)
    {
        p[i]=ob.p[i];
    }
}
B::~B()
{
    delete []p;
}
void B::show1(building ob)
{
    int k=0;
        for(int i=0;i<a;i++)
        {
            for(int j=0;j<b;j++)
            {
                p[k]=ob.get(i,j);
                cout<<"число комнат на "<<i+1<<" этаже "<<"в "<<k+1<<" квартире - ";
                cout<<p[k]/15<<" ";
                cout<<endl;
                k++;
            }
            
        }
}
    int B::get1(int i)
    {
        return p[i];
    }
int main()
{
    setlocale(LC_ALL,"rus");
    int x,y;
    cout<<"Введите число этажей=";
    cin>>x;
    cout<<"Введите число квартир на этаж=";
    cin>>y;
    building b(x,y);
    building d=b; //подобная инструкция для B e=a работает криво.
    B a(x,y,x*y);
    b.show();
    a.show1(b);
    d.show();
    a.show1(d);
    getch();
}
когда пытаюсь присвоить объект произ. класса др. объекту создается копия (по крайней мере вызывается конструктор копий), но вместо вывода того что нужно вылетает с вот этим вот _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
что не так?

Добавлено через 40 минут
может и не конструктор, но память все равно где-то крошится. в чем может быть причина.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru