Форум программистов, компьютерный форум CyberForum.ru

При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как обьявляется функция? http://www.cyberforum.ru/cpp-beginners/thread44989.html
Как объявить функцию в С++ Builder??? Например в Delphi это делается так : type TForm1 = class(TForm) function MyFunction(keyword : string) : longint; Потом нажимается сочетание клавиш Ctrl + Shift + C
C++ Объявление типов в h.-файлах Нужно объвить несколько переменных нестандартного типа (этот тип объявлен в библиотеке DirectX), компилятор ругается! Получается только с типом (int)! Подскажите примерчик с объявлением нестандартного типа! http://www.cyberforum.ru/cpp-beginners/thread44936.html
Как в функцию передать координаты C++
Есть функция: void enemy() { SetConsoleCursorPosition(console,coord1); cout << ' ' << flush;//Стираем if(dir1 == LEFT) { if(a!=1)coord1.X--; else dir1 = RIGHT;
C++ Сортировка массива структур
В общем, то что в названии темы, то и не получается. Не хочет присваиваться адрес предыдущей ячейки в массиве stud1.h #include <iostream> #include <stdlib.h> using namespace std; namespace grup { struct student
C++ Вопрос по мелочи http://www.cyberforum.ru/cpp-beginners/thread44874.html
Здравсвуйте! Когда-то , недавно, мы обсуждали тему среднее арифметическое числа. Я вроде понял её, но есть маленький нюанс. Вот код: #include <iostream> using namespace std; int main() { setlocale(0,""); int i = 0; double s = 0.0, vvod; char indicator = 'y';
C++ Решить систему неравенств (результат представить в виде массива) Задали практику в С++ но учить будем ее только в сентябре поэтому прошу решить легинькую задачку на массивы вычислить Z ={ X*Y; sqr(X)+sqr(Y) <1, sqrt(X*Y); sqr(X) + sqr(Y) >= 1 при Y=-5.5, X={1.8, -1.6, ... , 1.2}. Результат представить в виде массива. sqr( ) - к квадрату подробнее

Показать сообщение отдельно
Alucard12r
Сообщений: n/a

При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса - C++

24.07.2009, 20:40. Просмотров 821. Ответов 11
Метки (Все метки)

Описал первый класс,затем - описал второй класс, используя первый,и когда начал перезагружать оператор для второго класса, вылезла ошибка.Выделена синим цветом в самом низу кода.
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "iostream"
#include "stdio.h"
#include "math.h"
#include "windows.h"
#include "malloc.h"
using namespace std;
 
class vektor
{
public:
    float x;
    float y;
    double lenght()
    {
        double l;
        l = sqrt(x * x + y * y);
        return l;
    }
    vektor operator+ (vektor thevektor)
    {
        vektor summarn;
        summarn.x = x + thevektor.x;
        summarn.y = y + thevektor.y;
        return summarn;
    }
    vektor operator- (vektor thevektor)
    {
        vektor raznost;
        raznost.x = x - thevektor.x;
        raznost.y = y - thevektor.y;
        return raznost;
    }
    float operator* (vektor thevektor)
    {
        float skalar;
        skalar = x * thevektor.x + y * thevektor.y;
        return skalar;
    }
    bool operator|| (vektor thevektor)
    {
        float cosin;
        cosin = sqrt((x * x + y * y)*(thevektor.x * thevektor.x + thevektor.y * thevektor.y));
        if (cosin == 0) return true;
        cosin = (x * thevektor.x + y * thevektor.y)/cosin;
        if ((cosin == 1)||(cosin == -1)) return true;
        return false;
    }
    vektor operator! ()
    {
        vektor negative;
        negative.x = -x;
        negative.y = -y;
        return negative;
    }
    bool operator== (vektor thevektor)
    {
        if (x != thevektor.x) return false;
        if (y != thevektor.y) return false;
        return true;
    }
    bool operator!= (vektor thevektor)
    {
        if (x != thevektor.x) return true;
        if (y != thevektor.y) return true;
        return false;
    }
    bool operator&& (vektor thevektor)
    {
        float cosin;
        cosin = sqrt((x * x + y * y)*(thevektor.x * thevektor.x + thevektor.y * thevektor.y));
        if (cosin == 0) return false;
        cosin = (x * thevektor.x + y * thevektor.y)/cosin;
        if ((cosin == 1)||(cosin == -1)) return false;
        return true;
    }
};
 
class treugolnik
{
public:
    vektor B;
    vektor C;
    double square()
    {
        double sqroftrg;
        sqroftrg = 0.5 * sqrt((B.x * B.x * C.y * C.y) + (C.x * C.x * B.y * B.y) - (2 * B.x * C.x * B.y * C.y));
        return sqroftrg;
    }
    bool make(vektor vB,vektor vC)
    {
        if (vB||vC) return false;
        B = vB;
        C = vC;
        return true;
    }
    bool operator== (treugolnik Trrr)
    {
        double Check[1][2];
        int i;
        for (i = 0; i < 3; ++i) Check[0][i] = 0;
        for (i = 0; i < 3; ++i) Check[0][i] = 0;
        vektor D,E;
        D = Trrr.B - Trrr.C;
        E = B - C;
/* вот на этой строке вылетает.
Меняя местами, пытаясь извлекать вместо всего вектора B его часть B.x ,
установил,что не может извлечь ничего из "B" и "C"
вопрос,как задать вектора "B" и "C" в составе первого операнда (тип Treugolnik),
 прямо написать их имена так же,как в описании класса,
получается с любым стандартным типом переменной 
и не получается с другим классом*/
        Check[0][0] = B.lenght();
        Check[0][1] = C.lenght();
        Check[0][2] = E.lenght();
        Check[1][0] = Trrr.B.lenght();
        Check[1][1] = Trrr.C.lenght();
        Check[1][2] = D.lenght();
        return true;
    }
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru