Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
3 / 3 / 0
Регистрация: 14.10.2012
Сообщений: 12

Обращение к элементам класса через []

26.10.2013, 12:00. Показов 5119. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу класс для работы с комплексными числами, почти все готово, осталось только 1 задание.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2013, 12:00
Ответы с готовыми решениями:

Обращение к элементам класса через указатель
Что выполняет в данном случае оператор -> this->t1 = (gcnew System::Windows::Forms::TextBox()); ? Почему нельзя писать так this.t1...

Обращение к элементам, членам класса
Здравствуйте! Мне нужно выполнить задания из меню (в коде программы), но я не могу понять как обраться в функции к NodeElement *cur и к...

Обращение к элементам двухмерного массива через указатель
Здравствуйте! Имеется класс class Analyzer { public: vector< vector<string> > *sentences;

6
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.10.2013, 12:09
C++
1
2
3
4
double & operator [] ( unsigned int index ) {
    ...
    return ...
}
0
3 / 3 / 0
Регистрация: 14.10.2012
Сообщений: 12
26.10.2013, 12:11  [ТС]
Случайно отправил не дописав. Так вот задание: Необходимо сделать возможным изменять действительную и мнимую часть таким образом P[0]= и P[1]= соответственно (P-какое-то комплексное число). До меня никак не доходит как это сделать, думал перегрузить оператор [], но работает как то не так как хотелось бы.
Вот код всей программы:
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
64
65
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class ComplexNumbers
{
private: 
    float valid, alleged;
public:
    ComplexNumbers(float x, float y)
    {
        valid=x;
        alleged=y;
    }
 
    ComplexNumbers()
    {
        //cout<<"Enter the valid part\n";
        valid=0;
        //cout<<"Enter the alleged part\n";
        alleged=0;
    }
 
    ComplexNumbers operator+(ComplexNumbers R)
    {
        ComplexNumbers P;
        P.valid=valid+R.valid;
        P.alleged=alleged+R.alleged;
        return P;
    }
 
    ComplexNumbers operator-(ComplexNumbers R)
    {
        ComplexNumbers P;
        P.valid=valid-R.valid;
        P.alleged=alleged-R.alleged;
        return P;
    }
 
    ComplexNumbers operator*(ComplexNumbers R)
    {
        ComplexNumbers P;
        P.valid=valid*R.valid-alleged*R.alleged;
        P.alleged=valid*R.alleged+alleged*R.valid;
        return P;
    }
 
    ComplexNumbers operator*(float R)
    {
        ComplexNumbers P;
        P.valid=valid*R;
        P.alleged=alleged*R;
        return P;
    }
 
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    ComplexNumbers a,b(-2,5),c(3,-6),d(4,6),e(0,5),g(5,0),h(-5,0),j(0,-5);  
    a=b+c;
    return 0;
}
Когда перегружаю [] таким образом
C++
1
2
3
4
5
6
7
8
ComplexNumbers operator[](int R)
    {
        ComplexNumbers P;
        if (R==0)
            return P.valid;
        else if (R==1)
            return P.alleged;
    }
а потом хочу изменить допустим мнимую часть так b[1]=5 получается ошибка "левосторонний операнд должен быть левосторонним значением"
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
26.10.2013, 12:18
Во-первых ты возвращаешь тип float.
Во вторых, в таких случаях обычно возвращают ссылку.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.10.2013, 12:22
в-третьих, а что будет возвращено если индекс не 0 и не 1?
1
3 / 3 / 0
Регистрация: 14.10.2012
Сообщений: 12
26.10.2013, 12:37  [ТС]
Да, насчет float понятно, это все моя невнимательность.
Не могли бы вы написать как для моей перегрузки вернуть ссылку?
А насчет не 0 и не 1 я пока не думал, для меня важно сначала реализовать возможность работы с 0 и 1, а потом уже я собирался доработать остальное.

Добавлено через 9 минут
Все, разобрался, спасибо большое.
Если кому-то в будущем будет интересно вот код:
C++
1
2
3
4
5
6
7
float& operator[](int R)
    {
        if (R==0)
            return valid;
        else if (R==1)
            return alleged;
    }
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.10.2013, 12:47
Цитата Сообщение от JirniiMongol Посмотреть сообщение
А насчет не 0 и не 1 я пока не думал, для меня важно сначала реализовать возможность работы с 0 и 1, а потом уже я собирался доработать остальное.
а над этим надо думать в первую очередь. функция должна что-то вернуть, то что компилятор скомпилит этот код несмотря на то что не во всех случаях есть возвращаемое значение не означает код правильный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2013, 12:47
Помогаю со студенческими работами здесь

Обращение к элементам динамического массива через указатели
Само задание написано внизу в коментарии! Заранее спасибо! #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...

Обращение к элементам массива через биты некоторого числа
Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как...

Массив классов, задание и обращение к элементам через указатель
Доброе время суток!! Помогите новичку разобраться с классами! Очень надо как всегда:) Задан класс class A { int m; ...

Обращение к элементам линейного списка через элементы массива указателей
Вот полная версия программы. Компилятор не выдаёт ошибок, но при выполнении, судя по всему, на строчке 278, при попытке обратится к...

Вызов метода производного класса через обращение к методу базового класса
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru