Post: [Help] Lỗi Hàm ~String Trong Lớp String
User: 11520207
Infraction: Tạo thread thiếu chất lượng
Points: 1
Administrative Note:
Message to User:
Original Post:
User: 11520207
Infraction: Tạo thread thiếu chất lượng
Points: 1
Administrative Note:
Chú ý: [Phải đọc trước khi tạo thread] Một số quy tắc khi hỏi các vấn đề về lập trình.
Message to User:
Original Post:
Mình đang Code bài tập về lớp chuỗi kí tự String. Debug bị lỗi fail assertion, trong khi mình Check lại không hề thấy lỗi, nhưng chạy lại lỗi. Mình kiểm tra hoài vẫn không thấy sai chỗ nào. Ngồi Check cả buổi rồi mình xóa hàm ~String luôn thì lại chạy bình thường.:shock:
Vấn đề là mình muốn giữ hàm ~String thì phải làm cách nào. Các bạn xem giùm Code của mình có lỗi chỗ nào thì giúp mình hen.:go:
Code :
* File Header: STRING.h
#pragma once
#include "string.h"
#include "iostream"
using namespace std;
class STRING
{
private:
char *Content;
int Lenght;
public:
STRING();
STRING(char* s);
STRING operator=(const STRING& p);
~STRING();
friend STRING operator+(const STRING& p,const STRING& q);
void Xuat();
};
*File Cpp: STRING.cpp
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
STRING::STRING()
{
Content=NULL;
Lenght=0;
}
STRING::STRING(char* s)
{
Lenght=strlen(s);
Content=new char [Lenght+1];
strcpy(Content,s);
}
STRING STRING:perator=(const STRING& p)
{
delete []Content;
Lenght=strlen(p.Content);
Content=new char [Lenght+1];
strcpy(Content,p.Content);
return *this;
}
STRING::~STRING()
{
delete []Content;
Lenght=0;
}
STRING operator+(const STRING& p,const STRING& q)
{
STRING t;
t.Lenght=p.Lenght+q.Lenght;
t.Content=new char [t.Lenght+1];
strcpy(t.Content,p.Content);
strcat(t.Content,q.Content);
return t;
}
void STRING::Xuat()
{
cout<<Content<<"\n";
}
*File Cpp chứa hàm Main:
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
void main()
{
STRING x,y("DH CNTT"),z="DHQG";
y.Xuat();
z.Xuat();
x=y+z;
x.Xuat();
}
Vấn đề là mình muốn giữ hàm ~String thì phải làm cách nào. Các bạn xem giùm Code của mình có lỗi chỗ nào thì giúp mình hen.:go:
Code :
* File Header: STRING.h
#pragma once
#include "string.h"
#include "iostream"
using namespace std;
class STRING
{
private:
char *Content;
int Lenght;
public:
STRING();
STRING(char* s);
STRING operator=(const STRING& p);
~STRING();
friend STRING operator+(const STRING& p,const STRING& q);
void Xuat();
};
*File Cpp: STRING.cpp
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
STRING::STRING()
{
Content=NULL;
Lenght=0;
}
STRING::STRING(char* s)
{
Lenght=strlen(s);
Content=new char [Lenght+1];
strcpy(Content,s);
}
STRING STRING:perator=(const STRING& p)
{
delete []Content;
Lenght=strlen(p.Content);
Content=new char [Lenght+1];
strcpy(Content,p.Content);
return *this;
}
STRING::~STRING()
{
delete []Content;
Lenght=0;
}
STRING operator+(const STRING& p,const STRING& q)
{
STRING t;
t.Lenght=p.Lenght+q.Lenght;
t.Content=new char [t.Lenght+1];
strcpy(t.Content,p.Content);
strcat(t.Content,q.Content);
return t;
}
void STRING::Xuat()
{
cout<<Content<<"\n";
}
*File Cpp chứa hàm Main:
#include "STRING.h"
#include "string.h"
#include "iostream"
using namespace std;
void main()
{
STRING x,y("DH CNTT"),z="DHQG";
y.Xuat();
z.Xuat();
x=y+z;
x.Xuat();
}