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

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Френдовый оператор умножения - C++

21.04.2011, 07:17. Просмотров 659. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A
{
 protected A (...);
...
};
...
class B
{
 public:
 ...
 friend
 B operator *  (double  x, A &a); // Эту строку компил проглотил
};
...
B operator *(double x, A &a) // А вот эта строка ему не нравится. Почему?
{
...
}
Добавлено через 1 минуту
Пишет:
make cspm
g++ -o cspm cspm.cpp -lX11 -L/usr/X11R6/lib
cspm.cpp:77: error: expected constructor, destructor, or type conversion before ‘operator’
cspm.cpp:88: error: no match for ‘operator*’ in ‘1.0e+1 * TLengthUnit::Meter’
make: *** [cspm] Ошибка 1
Добавлено через 51 секунду
77-я строка здесь 15-я.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 07:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Френдовый оператор умножения (C++):

Реализовать оператор умножения класса - C++
Только начал работать с классами и мне не совсем понятно, как работать с операторами, вот что у меня получилось: class Matrix { ...

Перегрузить оператор используя внешнюю функцию логического умножения - C++
Перегрузить оператор используя внешнюю функцию логического умножения ребята нужна программа

Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения - C++
1.Дано число a. Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения;...

Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и рекурсию - C++
Помогите пожалуйста с рекурсией Написать функцию умножения двух,заданных с клавиатуры чисел, используя только операцию умножения и...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...

4
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.04.2011, 09:54 #2
Так работает.

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
#include <iostream>
 
class A
{
public:
    A(int a):
    m_a(a)
    {
    }
 
    int get_a() const
    {
        return m_a;
    }
 
private:
    int m_a;
};
 
class B
{
public:
    B(double b):
    m_b(b)
    {
    }
 
    double get_b() const
    {
        return m_b;
    }
 
    friend B operator *  (double  x, A &a);
 
private:
    double m_b;
};
 
B operator*(double x, A &a)
{
    return B (x * a.get_a());
}
 
int main()
{
    A a(10);
 
    B b = 1.55 * a;
 
    std::cout << b.get_b() << std::endl;
 
    return 0;
}
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.04.2011, 11:59  [ТС] #3
Оказалось, я пропустил букуву в имени типа (на саммо деле оно длинннее). Но теперь другая пробелема.
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
21.04.2011, 12:05 #4
taras atavin, вот по этой причине не надо выкладывать упрощённые варианты с обобщениями, выкладывайте именно тот код, который не работает.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
21.04.2011, 12:11  [ТС] #5
Так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class A
{
 protected A (...);
...
};
...
class B
{
 public:
 ...
 friend
 B operator *  (double  x, A &a); 
};
...
B operator *(double x, A &a)
{
...
}
 
A a;
B b=10.0*a;
компилит, а так:
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
class A
{
 protected:
  A (...);
...
 public:
 const static A a;
};
const A a(...);
...
class B
{
 public:
 ...
 friend
 B operator *  (double  x, A &a); // Эту строку компил проглотил
};
...
B operator *(double x, A &a) // А вот эта строка ему не нравится. Почему?
{
...
}
 
B b=10.0*A::a;
ругается на последнюю строку. Пишет:
error: no match for ‘operator*’ in ‘1.0e+1 * A::a’
Добавлено через 1 минуту
Проект велосипедистый со своими типами размерных величин и единиц измеренения.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2011, 12:11
Привет! Вот еще темы с ответами:

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости - C++
для чего нужен оператор двоеточие ( : ), если два двоеточия( :: ) - это оператор расширения области видимости.

Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? - C++
#include &lt;iostream&gt; using namespace std; class random { public: void Set(int b){a=b;} int Get(){return a;} private: ...

Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. - C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
21.04.2011, 12:11
Ответ Создать тему
Опции темы

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