Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Заблокирован
1

Почему если не использовать бинарный оператор, то выдаст ошибку?

13.06.2018, 09:57. Просмотров 699. Ответов 2
Метки нет (Все метки)

Почему если убрать бинарный оператор, то компилятор выдаёт ошибку?
Фрагмент кода с 14-ой до 22-ой строки где пробовал убрать бинарный оператор:

C#
1
2
3
4
5
6
7
8
9
public static ThreeD operator +(ThreeD op1, ThreeD op2)
    {
        ThreeD result = new ThreeD();
        /* Сложить координаты двух точек и возвратить результат. */
        result.x = op1.x + op2.x; // Эти операторы выполняют
        result.y = op1.y + op2.y; // целочисленное сложение,
        result.z = op1.z + op2.z; // сохраняя свое исходное назначение.
        return result;
    }


Полный код программы:

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
66
67
68
69
70
using System;
// Класс для хранения трехмерных координат.
class ThreeD {
    int x, y, z; // трехмерные координаты
    public ThreeD()
    {
        x = y = z = 0;
    }
    public ThreeD(int i, int j, int k)
    {
        x = i; y = j; z = k;
    }
    // Перегрузить бинарный оператор +.
    public static ThreeD operator +(ThreeD op1, ThreeD op2)
    {
        ThreeD result = new ThreeD();
        /* Сложить координаты двух точек и возвратить результат. */
        result.x = op1.x + op2.x; // Эти операторы выполняют
        result.y = op1.y + op2.y; // целочисленное сложение,
        result.z = op1.z + op2.z; // сохраняя свое исходное назначение.
        return result;
    }
    // Перегрузить бинарный оператор -.
    public static ThreeD operator -(ThreeD op1, ThreeD op2)
    {
        ThreeD result = new ThreeD();
        /* Обратите внимание на порядок следования операндов:
        op1 — левый операнд, а ор2 — правый операнд. */
        result.x = op1.x - op2.x; // Эти операторы
        result.y = op1.y - op2.y; // выполняют целочисленное
        result.z = op1.z - op2.z; // вычитание
        return result;
    }
    // Вывести координаты X, Y, Z.
    public void Show()
    {
        Console.WriteLine(x + ", " + y + ", " + z);
    }
}
class ThreeDDemo {
    static void Main()
    {
        ThreeD a = new ThreeD(1, 2, 3);
        ThreeD b = new ThreeD(10, 10, 10);
        ThreeD c;
        Console.Write("Координаты точки a: ");
        a.Show();
        Console.WriteLine();
        Console.Write("Координаты точки b: ");
        b.Show();
        Console.WriteLine();
        c = a + b; // сложить координаты точек а и b
        Console.Write("Результат сложения а + b: ");
        c.Show();
        Console.WriteLine();
        c = a + b + c; // сложить координаты точек а, b и с
        Console.Write("Результат сложения а + b + с: ");
        c.Show();
        Console.WriteLine();
        c = c - a; // вычесть координаты точки а
        Console.Write("Результат вычитания с - а: ");
        c.Show();
        Console.WriteLine();
        c = c - b; // вычесть координаты точки b
        Console.Write("Результат вычитания с - b: ");
        c.Show();
        Console.WriteLine();
        Console.ReadKey();
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2018, 09:57
Ответы с готовыми решениями:

можете объяснить почему у мне компилятор выводит ошибку (C2679 бинарный "<<": не найден оператор, принимающий прав)
#include &lt;string&gt; #include &quot;pch.h&quot; #include &lt;iostream&gt; using namespace std; string bilet(int...

Почему для событий нельзя использовать оператор =?
Почему для событий нельзя использовать оператор =?

Почему нельзя использовать оператор Goto в DLL-проекте
Итак, я пытаюсь использовать оператор Goto в проекте DLL-библиотеки: Label LabelPoint;...

Исправить ошибку "не найден бинарный оператор"
if (r!=NULL) ругается на то, что в скобках и пишет: error C2678: бинарный &quot;!=&quot;: не найден...

2
Эксперт .NET
14707 / 11117 / 2920
Регистрация: 17.09.2011
Сообщений: 18,654
13.06.2018, 10:02 2
Цитата Сообщение от MaksSmag Посмотреть сообщение
Почему если убрать бинарный оператор, то компилятор выдаёт ошибку?
Потому что вы будете пытаться применить оператор сложения к аргументам типа ThreeD, в котором не определен оператор сложения.
1
Заблокирован
13.06.2018, 10:09  [ТС] 3
kolorotur, Надеюсь я понял...

Добавлено через 4 минуты
я хотел сказать я то имею в виду а не "Надеюсь я понял"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2018, 10:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Стоит ли использовать тернарный оператор, если всегда есть альтернативы в С ?
Мне вот интересно , что скажут люди о Тернарном операторе, которые уже на С++ программируют...

Тернарный оператор: Почему выводит ошибку lvalue required?
Данный код не компилируется в c99 : /*...

Как использовать перегруженный оператор [ ], если дан не сам класс, а указатель на него?
Это указатель на класс figure *f Это перегрузка оператора void figure::operator (int i) { ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.