Срабатывание точки останова
При компиляции этого кода выбивает ошибку срабатывании точки останова, которую я не ставил
#include <iostream>
#include <cstring>
using namespace std;
class String {
public:
String();
String(const char* string);
void printString();
void get_len(const char* string);
~String();
protected:
char* string;
int len;
};
class String_indent : String {
public:
String_indent();
String_indent(const char* string);
void Upper_case();
void Lower_case();
int out(char str);
~String_indent();
};
int main()
{
String string("a");
String_indent string1("String");
string1.Upper_case();
return 0;
}
/*Конструктор без параметра класса String для задания начальных данных переменным string*/
String::String()
{
string = nullptr;
len = 0;
}
/*Конструктор с параметром который содержит указатель на массив чаров string и определяет основную реализацию строки*/
String::String(const char* string)
{
len = strlen(string);
this->string = new char[len + 1];
for (int i = 0; i < len; i++) {
this->string[i] = string[i];
}
this->string[len] = '\0';
}
void String::printString()
{
cout << string;
}
void String::get_len(const char* string)
{
int l = strlen(string);
cout << l;
}
/*Деструктор класса очищает память*/
String::~String()
{
delete[] this->string;
}
void String_indent::Upper_case()
{
for (int i = 0; i < len; i++) {
if ((this->string[i] >= 141) && (this->string[i] <= 172)) {
this->string[i] = string[i] - 40;
cout << string[i];
}
if ((this->string[i] >= 101) && (this->string[i] <= 132)) {
this->string[i] = string[i];
cout << string[i];
}
}
}
void String_indent::Lower_case() {
for (int i = 0; i < len; i++) {
if ((this->string[i] >= 101) && (this->string[i] <= 132)) {
this->string[i] = string[i] + 40;
}
if ((this->string[i] >= 141) && (this->string[i] <= 172)) {
this->string[i] = string[i];
}
cout << string[i];
}
}
int String_indent::out(char str)
{
int count = 0;
try {
for (int i = 0; i < len; i++) {
if (this->string[i] != str) {
count++;
}
else return count;
}
}
catch (exception exception) {
return 0;
}
}
String_indent::String_indent(const char* string) {
len = strlen(string);
this->string = new char[len + 1];
for (int i = 1; i < len; i++) {
this->string[i] = string[i];
}
this->string[len] = '\0';
}
String_indent::~String_indent() {
delete[] this->string;
}
Думаю что проблема в этом куске кода, но как его исправить?
String_indent::String_indent(const char* string) {
len = strlen(string);
this->string = new char[len + 1];
for (int i = 0; i < len; i++) {
this->string[i] = string[i];
}
this->string[len] = '\0';
}