С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
1

Не перезагружает "+" как я хочу

29.03.2014, 22:34. Показов 745. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Захотел что бы вот так действовал плюс
C++
1
2
    riad CB1("asd"),CB2("dsa"),CB3("dsw");
    riad aaa  = CB1 + CB2;
ааа == 9 в идеале это хотел увидеть...
Посмотрел примерчики вот сделал так..
C++
1
2
3
4
5
    riad riad::operator+(const riad &R){
         riad asd;
         asd.stroka=  stroka.size + R.stroka.size;
         return asd;
    }
и покатились ошибка, как то не могу ее решить....
error C2297: '+' : illegal, right operand has type 'unsigned int (__thiscall std::basic_string<_Elem,_Traits,_Alloc>::* )(void) throw() const'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Alloc=std::allocator<char>
1> ]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.03.2014, 22:34
Ответы с готовыми решениями:

Как создать кнопку, которая не перезагружает своим нажатием страничку браузера?
Проштудировал html-хелпер, перекопал яндекс. Не нашёл вариантов созданиия кнопки, нажатие на...

хочу то,не знаю что,хочу так,не знаю как(про голосовой ввод в экселе)
сразу прошу прощения за кривое объяснение. в общем я хочу голосом вводить текст. но не просто...

Постоянно перезагружает
Вот у меня стояла озу...

Память Перезагружает компьютер
Здравствуйте Форумчани Проблема с Оперативкой 8GB 2Rx8 PC-3 -12800U-11-13-B1 (16 чипов) 1 планка ...

9
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
29.03.2014, 22:40 2
Lynatik001, код класса riad сюда покажи

Цитата Сообщение от Lynatik001 Посмотреть сообщение
C++
1
asd.stroka= stroka.size + R.stroka.size;
А вообще вот тут уже несуразность. Складываешь размеры, а записываешь их в строку.
И еще не понятно почему ты ждешь что aaa будет 9. Тебе строки надо склеить (если так, то ааа должно быть "asddsa") или что?
1
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.03.2014, 22:47  [ТС] 3
Цитата Сообщение от DrOffset Посмотреть сообщение
код класса riad сюда покажи
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
#include "stdafx.h"
#include "riad.h"
 
    riad::riad(){
        stroka = "";
    }
    riad::riad(string a){
        stroka = a;
    }
    riad::riad(riad &b){
        stroka = b.stroka;
    }
    int riad::leght(string a){
        int q = a.length();
        return q;
    }
    void riad::view(string a){
        cout << a << endl;
    }
    riad riad::operator+(const riad &R){
         riad asd;
         asd.stroka=  stroka.size + R.stroka.size;
         return asd;
    }
Добавлено через 3 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
А вообще вот тут уже несуразность. Складываешь размеры, а записываешь их в строку.
И еще не понятно почему ты ждешь что aaa будет 9. Тебе строки надо склеить (если так, то ааа должно быть "asddsa") или что?
я хотел что бы при обьект(строка) + обьект(строка) = общая длина обеих строк
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
29.03.2014, 22:56 4
Цитата Сообщение от Lynatik001 Посмотреть сообщение
я хотел что бы при обьект(строка) + обьект(строка) = общая длина обеих строк
Хм. Ну у тебя и так будет общая длина, если ты просто склеишь строки. Как-то так:
C++
1
2
3
4
5
6
riad riad::operator+(const riad &R){
         riad asd;
         asd.stroka = stroka + R.stroka;
         asd.size = asd.stroka.size();
         return asd;
}
Но вообще, судя по коду, который ты привел (я кстати определение класса просил, а не реализацию), у тебя там многовато ошибок и неточностей.
1
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.03.2014, 23:10  [ТС] 5
Цитата Сообщение от DrOffset Посмотреть сообщение
Хм. Ну у тебя и так будет общая длина, если ты просто склеишь строки. Как-то так:
да ясно то что можно узнать много как раз длину. Я просто думал что бы допустим при уравнении
C++
1
2
riad CB1("asd"),CB2("dsa"),CB3("dsw");
    riad aaa  = CB1 + CB2;
aaa = 9
короче я наверное не понял суть изменения оператора. Думал что таким способом можно изменить суть что мы обьединяем, то есть я например просто хотел таким способом обьеденить длину строк а не их значение.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
29.03.2014, 23:17 6
Цитата Сообщение от Lynatik001 Посмотреть сообщение
aaa = 9
Только не 9, а 6. Две строки по три символа == 6

Цитата Сообщение от Lynatik001 Посмотреть сообщение
короче я наверное не понял суть изменения оператора. Думал что таким способом можно изменить суть что мы обьединяем, то есть я например просто хотел таким способом обьеденить длину строк а не их значение.
Налицо логическое противоречие. Если нужно просто объединить длину строк, то возвращать нужно не riad, а int.
C++
1
2
3
int riad::operator+(const riad &R){
         return stroka.size() + R.stroka.size();
}
Если же ты возвращаешь riad, то логично помещать туда склеенную строку. А не просто новый размер.
1
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
29.03.2014, 23:39  [ТС] 7
Цитата Сообщение от DrOffset Посмотреть сообщение
Если же ты возвращаешь riad, то логично помещать туда склеенную строку. А не просто новый размер.
ну тут уже что то типа вот такой ошибки видает
C++
1
riad aaa  = CB1 + CB2;
CB1 подчеркивает.... ясно что конвертировать, пробывал но чет не выходит
error C2440: 'initializing' : cannot convert from 'int' to 'riad'
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
30.03.2014, 00:37 8
Lynatik001, ну так очевидно же, что в таком случае у нас aaa должен быть типа int. В общем определиться тебе нужно в том, что ты хочешь. До этих пор какой-то конкретный правильный совет, кроме как переписать класс riad сложно дать.
Сейчас же получается, что семантика твоего типа riad не формализована тобой же. Определи строгие рамки для его поведения. И тогда все встанет на свои места.
1
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
30.03.2014, 01:09  [ТС] 9
спасибо разобрался, уже работает как надо
Цитата Сообщение от DrOffset Посмотреть сообщение
Сейчас же получается, что семантика твоего типа riad не формализована тобой же. Определи строгие рамки для его поведения. И тогда все встанет на свои места.
Что то не понимаю, это ты о смысловом обозначении переменных? И в смысле определить строгие рамки поведения?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
30.03.2014, 01:17 10
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Что то не понимаю, это ты о смысловом обозначении переменных? И в смысле определить строгие рамки поведения)
Определить что класс может и должен делать, а что нет.
Вот взять хотя бы твой пример. Ты говоришь, хочу сложить два объекта, через собственный оператор+. Хорошо, складываем. Ты говоришь, что при этом он должен складывать только размер. Окей. Но в классе есть еще и строка. Мы сложили размер, а строка в новом объекте, полученном после сложения чему должна быть равна - непонятно. Я тебе предложил вариант, чтобы строка склеивалась при сложении, но ты мне дал понять, что хочешь не этого. Тогда очевидно, что здесь логическая нестыковка. Тогда нужно либо разнести сущности. Реализовать класс "строка" и определить в нем операции, характерные для строк. И организовать класс "размер", который будет заниматься подсчетом размеров у "строк". Тогда каждый будет заниматься свои делом и путаницы не будет. Именно четкое представление тобой того, какой класс чем должен заниматься я и имел в виду под "определить строгие рамки поведения". Либо пойти по предложенному мной пути и таки склеивать строки, а общий размер брать уже у этой склеенной строки.
1
30.03.2014, 01:17
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2014, 01:17
Помогаю со студенческими работами здесь

Window 8 перезагружает модем
Купил ноутбук Lenovo Y510p с предустановленным Windows 8 для одного языка. При подключении к...

Паскаль перезагружает комп
Я включаю паскаль комп сразу перезагружается. Подскажите что делать?

Flylink перезагружает комп
переустановил хр, всё работает, но как только запускаю флая, комп перезагружается. флаи ставил...

GTX 570 перезагружает ПК
Доброго времени суток! Прошу сразу не пинать, т.к. не являюсь АйТишником. Предыстория: решил...

Ajax перезагружает страницу
Всем привет! Использую ajax для обработки формы обратной связи и sms.ru для отправки смсок. Ну и...

Функция перезагружает страницу?
вот код: { var div = document.createElement('div'); div.className = &quot;injection&quot;; div.innerHTML...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru