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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zhmukh
 Аватар для zhmukh
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 4
#1

Ребят, подскажите как исправить ошибку... - C++

15.02.2012, 17:39. Просмотров 505. Ответов 3
Метки нет (Все метки)

не могу понять , много что перепробывал компилятор C++ builder codegear
вот собственно сам код
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
121
122
123
124
125
126
127
128
129
130
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <iostream.h>
 #pragma argsused
 
//---------------------------------------------------------------------------
 
#pragma argsused
class Pair
    {
        public:
            bool t;
            Pair(int,int);
            int get_a();
            int get_b();
            void print();
            void set(int, int);
            friend Pair operator* (Pair,Pair);
            friend Pair operator- (Pair,Pair);
            //friend Pair operator== (Pair,Pair);
            void oper(Pair,Pair);
        private:
            int a;
            int b;
    } ;
 
 
Pair::Pair(int a1, int b1 )
{
    a=a1;
    b=b1;
}
int Pair::get_a()
{
return a;
}
int Pair::get_b()
{
return b;
}
 
Pair operator* (Pair p1, Pair p2)
{
Pair p3(0,0);
p3.a=p1.a*p2.a;
p3.b=p1.b*p2.b;
return p3;
}
Pair operator- (Pair p1, Pair p2)
{
Pair p3(0,0);
p3.a=p1.a-p1.b;
p3.b=p2.a-p2.b;
return p3;
}
 
//bool operator== (Pair p1, Pair p2)
void Pair::oper(Pair p1, Pair p2)
{
    if ((p1.a == p2.a) && (p1.b=p2.b))
    {
    t=true;
    }
 
}
void Pair :: print()
{
    cout<<a<<','<<b<<endl;
}
class Rational : public Pair
{
        public:
            Rational(int,int);
            void print();
 
            friend Rational operator+ (Pair,Pair);
            friend Rational operator/ (Rational,Rational);
            friend Pair operator-(Pair,Pair);
        private:
            int a;
            int b;
};
 
 
 
Rational::Rational(int a, int b) : Pair(a, b)
{
    a = a;
    b = b;
}
 
void Rational ::   print()
{
    cout<<a<<','<<b<<endl;
}
Rational operator/ (Pair p1, Pair p2)
{
Rational p3(0,0);
 
p3.a=p1.a*p2.b;
p3.b=p1.b*p2.a;
return p3;
}
Pair operator+ (Pair p1, Pair p2)
{
Pair p3(0,0);
p3.a=p1.a*p2.b+p1.b*p2.a;
p3.b=p1.b*p2.b;
return p3;
}
Pair operator- (Pair p1, Pair p2)
{
Pair p3(0,0);
p3.a=p1.a*p2.b-p1.b*p2.a;
p3.b=p1.b*p2.b;
return p3;
}
int main(int argc, char* argv[])
{
 
 
    pair1 p1(-2,0),p2(1,1),p(0,0);
    p=p1*p2;
    p.print();
    return 0;
}
//---------------------------------------------------------------------------

начинает давать ошибку
здесь


C++
1
2
3
4
5
6
7
8
Rational operator/ (Pair p1, Pair p2)
{
Rational p3(0,0);
 
p3.a=p1.a*p2.b;
p3.b=p1.b*p2.a;
return p3;
}


пишет
[BCC32 Error] File1.cpp(103): E2247 'Rational::a' is not accessible
[BCC32 Error] File1.cpp(104): E2247 'Rational::b' is not accessible
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 17:39     Ребят, подскажите как исправить ошибку...
Посмотрите здесь:

подскажите как исправить ошибку C++
Подскажите как исправить ошибку C++
Подскажите пожалуйста где исправить ошибку в программе сделанную в C++ C++
C++ Ребят, можете помочь исправить ошибку, долго с ней мучался.
Вот код, подскажите как исправить ошибку, пожалуйста??? C++
Подскажите как исправить ошибку C++
Подскажите, пожалуйста, как исправить ошибку C++
Подскажите как исправить ошибку C++
Написала программу, выводит ошибку, подскажите как исправить C++
C++ Подскажите, как исправить 1 ошибку в программе?
C++ Подскажите, как исправить ошибку
C++ Как исправить ошибку.подскажите пожалуйста. прога ломается на 79 строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
15.02.2012, 19:05     Ребят, подскажите как исправить ошибку... #2
Сделай функцию дружественной(у тебя она дружественная только для параметров типа Rational), она до private членов дотянуться не может.
Цитата Сообщение от zhmukh Посмотреть сообщение
C++
1
Rational::Rational(int a, int b) : Pair(a, b) { a = a; b = b; }
А это что должно было делать?
retmas
Жарю без масла
841 / 723 / 157
Регистрация: 13.01.2012
Сообщений: 1,666
15.02.2012, 19:14     Ребят, подскажите как исправить ошибку... #3
имея то, что имеем, можно написать
C++
1
2
3
4
Rational operator/ (Pair p1, Pair p2)
{
   return Rational(p1.get_a() * p2.get_b(), p1.get_b() * p2.get_a());
}
но лучше все удалите и подумайте еще раз как реализовать вашу задумку. уж больно много нелепостей
zhmukh
 Аватар для zhmukh
0 / 0 / 0
Регистрация: 08.12.2009
Сообщений: 4
15.02.2012, 19:32  [ТС]     Ребят, подскажите как исправить ошибку... #4
а как переопределить оператор в наследственном классе?
мне компилятор пишет что использовался уже ранее..
Yandex
Объявления
15.02.2012, 19:32     Ребят, подскажите как исправить ошибку...
Ответ Создать тему
Опции темы

Текущее время: 17:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru