NoobImbaPro
You can change this now in User CP.
- Reaction score
- 60
Compiler throws me the error at bottom of post, what I got wrong in my code?
Error:
Windows triggered a breakpoint...
This may be due to a corruption of the heap, which indicates a bug in project2.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while project2.exe has focus.
The output window may have more diagnostic information.
Code:
#include <cstdlib>
#include <iostream>
#include <string>
#define MAX_CHAR_LENGTH 20
using namespace std;
class DIstudent
{
private:
int *grades;
float average;
char *name;
char *surname;
public:
DIstudent(char *onoma, char *eponimo, int, int, int, int);
DIstudent(const DIstudent &);
~DIstudent();
DIstudent& operator=(const DIstudent& );
void print() const;
};
DIstudent::DIstudent(char *onoma, char *eponimo, int bathmos1, int bathmos2, int bathmos3, int bathmos4)
{
grades = new int(4);
grades[0] = bathmos1;
grades[1] = bathmos2;
grades[2] = bathmos3;
grades[3] = bathmos4;
int av = 0;
for(int i=0; i<4; i++)
av+=grades[i];
average = (float)av/4;
int l;
l = ( strlen(onoma) > MAX_CHAR_LENGTH ) ? MAX_CHAR_LENGTH : strlen(onoma);
name = new char(l+1);
strcpy(name, onoma);
name[l] = 0;
l = ( strlen(eponimo) > MAX_CHAR_LENGTH ) ? MAX_CHAR_LENGTH : strlen(eponimo);
surname = new char(l+1);
strcpy(surname, eponimo);
surname[l] = 0;
cout << name << " " << surname << " created\n";
}
DIstudent::DIstudent(const DIstudent &obj)
{
grades = new int(4);
for(int i=0; i<4; i++) { grades[i] = obj.grades[i]; }
average = obj.average;
name = new char(strlen(obj.name)+1);
strcpy(name, obj.name);
surname = new char(strlen(obj.surname)+1);
strcpy(surname, obj.surname);
cout << name << " " << surname << " copied\n";
}
DIstudent::~DIstudent()
{
cout << name << " " << surname << " destroyed\n";
delete[] grades;
delete[] name;
delete[] surname;
}
DIstudent& DIstudent::operator=(const DIstudent &obj)
{
if (this == &obj)
return *this;
delete[] grades;
delete[] name;
delete[] surname;
grades = new int(4);
for(int i=0; i<4; i++) { grades[i] = obj.grades[i]; }
average = obj.average;
name = new char(strlen(obj.name)+1);
strcpy(name, obj.name);
surname = new char(strlen(obj.surname)+1);
strcpy(surname, obj.surname);
cout << name << " " << surname << " assinged\n";
return *this;
}
void DIstudent::print() const
{
cout << name << " " << surname << endl
<< "The grades are: ";
for(int i=0; i<4;i++)
cout << grades[i] << " ";
cout << endl;
cout << "The average is: " << average << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
const DIstudent pupil_01("Stelios", "Kapsalis", 2, 4, 6, 8);
DIstudent pupil_02 = pupil_01;
DIstudent pupil_03("Giannhs", "Agiannhs", 8, 8, 9, 9);
pupil_01.print();
pupil_02.print();
pupil_03.print();
pupil_02 = pupil_03;
pupil_02.print();
system("pause");
return 0;
}
Error:
Windows triggered a breakpoint...
This may be due to a corruption of the heap, which indicates a bug in project2.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while project2.exe has focus.
The output window may have more diagnostic information.