1 / 1 / 0
Регистрация: 11.09.2021
Сообщений: 118
1

Изменяется константный объект в методе класса

01.05.2022, 11:38. Показов 646. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может изменить как-то метод или что? Я не хочу изменять А объект

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
#include <iostream>
#include <cstring>
 
using namespace std;
 
class MyStr {
public:
    int m_size = 128;
    char *m_str;
    
    MyStr();
    MyStr(const int size);
    MyStr(const char *str);
 
    ~MyStr() { delete[] m_str; } 
};
 
MyStr::MyStr(): m_str (new char[m_size]) {
    
}
 
MyStr::MyStr(const int size) {
    m_size = size;
    m_str = new char[m_size];
}
 
MyStr::MyStr(const char *str) {
    m_size = strlen(str) + 1;
    m_str = new char[m_size];
    
    strcpy(m_str, str);
}
 
MyStr operator- (const MyStr &obj1, const char* str) {
    int t_size = strlen(obj1.m_str) > strlen(str) ? strlen(obj1.m_str) + 1 : strlen(str) + 1;
    MyStr temp(t_size);
    char *match;
    
    if((match = strstr(obj1.m_str, str))) {
        *match = '\0';
        temp.m_str = strcat(obj1.m_str, strlen(str) + match);
    }
    
    else temp.m_str = obj1.m_str;
    
    return temp;
}
 
int main()
{
    MyStr a("ABO");
   
    cout << a.m_str << endl;
    MyStr d = a - "BO";
    
    cout << a.m_str << endl;
    
    cout << d.m_str << endl;
    
   
    
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2022, 11:38
Ответы с готовыми решениями:

Константный метод и константный аргумент в методе
Товарищи! Возник вопрос, в чем же разница, между константным методом и ссылкой на const объект в...

Статический константный объект класса
Извиняюсь за создание второй темы, но ...typedef std::vector&lt;int&gt; VI; class matrix { ...

Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать?
Подскажите, что значит константный указатель на объект, указатель на константный объект, и как это...

Константный объект класса квадратная матрица
Здравствуйте! Подскажите, пожалуйста, возможно ли и если да, то как создать константный объект...

6
726 / 428 / 206
Регистрация: 19.12.2016
Сообщений: 1,689
01.05.2022, 11:57 2
Лучший ответ Сообщение было отмечено Reb0ot как решение

Решение

Используйте правило трех
0
1 / 1 / 0
Регистрация: 11.09.2021
Сообщений: 118
01.05.2022, 12:19  [ТС] 3
ram876, что это значит? Я почитал, у меня вроде всё есть, кроме копирующего конструктора, написал его, но ничего не поменялсь:
C++
1
2
3
4
5
MyStr::MyStr(const MyStr &obj){
    m_size = obj.m_size;
    m_str = new char[m_size];
    strcpy(m_str, obj.m_str);
}
0
726 / 428 / 206
Регистрация: 19.12.2016
Сообщений: 1,689
01.05.2022, 12:22 4
А оператор присваивания копированием?
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
01.05.2022, 12:26 5
Цитата Сообщение от Reb0ot Посмотреть сообщение
C++
1
2
3
4
if((match = strstr(obj1.m_str, str))) {
        *match = '\0';
        temp.m_str = strcat(obj1.m_str, strlen(str) + match);
    }
А зачем вы его тогда меняете, если не хотите?

Вообще не понятно, что вы там сделать хотите...
C++
1
2
3
4
5
    if((match = strstr(obj1.m_str, str))) {
        auto count = match - obj1.m_str;
        memcpy(temp.m_str, obj1.m_str, count);
        temp.m_str[count] = '\0';
    }
1
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
01.05.2022, 12:29 6
Добавьте копиконструктор и operator=
и в operator- делайте копию передаваемого параметра.
0
1 / 1 / 0
Регистрация: 11.09.2021
Сообщений: 118
01.05.2022, 12:32  [ТС] 7
ram876, О, написал и заработало, спасибо вам большое)
0
01.05.2022, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2022, 12:32
Помогаю со студенческими работами здесь

Не создаётся объект шаблонного класса в методе
Добрый вечер. Ниже в коде ошибка в функции insertIndexList. Ошибка в строке Node&lt;string&gt;*...

Как передавать объект класса в методе main, чтобы конструктор не вызывался 2 раза?
Проблемы заключаются в следующем: есть класс для создания записи и класс для хранения массива этих...

Почему не получается создать объект нестатического класса в статическом методе? И для чего static в main()?
Есть: public class Main { class Dumb { { this.id = 0; } ...

Неконстантный указатель на константный объект
Добрый день, объясните пожалуйста, вот это: const int ival = 1024; int *const &amp;piref = &amp;ival; ...

Не изменяется глобальная переменная в методе
В методе &quot;loadpt2&quot; заполняю массив потоков. Он по моему глобальный, тогда почему при выходе с...

Не изменяется значение переменной в методе
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru