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

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

Войти
Регистрация
Восстановить пароль
 
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
#1

Перезагруженные функции - C++

23.01.2014, 14:37. Просмотров 199. Ответов 4
Метки нет (Все метки)

Имеется заголовочный файл и в нём объявлен класс MyVector:

C++
1
2
3
4
5
6
7
8
9
10
class MyVector {
  public:
  MyVector(void);
  GetXYZ(float X, float Y, float Z);
  MyVector operator +(MyVector vVector);
  MyVector operator-(const MyVector vVector);
  MyVector operator*(float num);
  MyVector operator /(float num);
  float x,y,z;
};
Вот реализация методов класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MyVector::GetXYZ(float X, float Y, float Z) {
    x = X;
    y = Y;
    z = Z;
} 
MyVector MyVector::MyVector operator +(MyVector vVector) {
    return MyVector(vVector.x + x, vVector.y + y, vVector.z+z);
}
MyVector MyVector::MyVector operator-(const MyVector vVector) {
    return MyVector(x - vVector.x, y - vVector.y, z - vVector.z);
}
MyVector MyVector::MyVector operator*(float num) {
    return MyVector(x * num, y * num, z * num);
}
MyVector MyVector::MyVector operator/(float num) {
    return MyVector(x/num, y/num, z/num);
}
Однако, при компиляции выпадает ошибка: Operator must be declared as function.
И выделяются строчки: MyVector MyVector::MyVector operator +(MyVector vVector) {
Подскажите, что я делаю неверно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 14:37     Перезагруженные функции
Посмотрите здесь:

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции - C++
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...

excel. создать таблицу значение кусочно-непрерывной функции y на интервале [xmin; xmax] с шагом h, для расчета функции y используя логические функции - Delphi


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
23.01.2014, 14:41     Перезагруженные функции #2
Цитата Сообщение от Vlad708 Посмотреть сообщение
MyVector::GetXYZ(float X, float Y, float Z) {
x = X;
y = Y;
z = Z;
}
Какой-то конструктор у вас странный. Имя конструктора должно быть идентично имени класса MyVector.
Убежденный
Системный программист
Эксперт С++
15298 / 6930 / 1096
Регистрация: 02.05.2013
Сообщений: 11,340
Завершенные тесты: 1
23.01.2014, 14:42     Перезагруженные функции #3
Было:
C++
1
MyVector MyVector::MyVector operator +(MyVector vVector) { return MyVector(vVector.x + x, vVector.y + y, vVector.z+z);
Стало:
C++
1
MyVector MyVector::operator +(MyVector vVector) { return MyVector(vVector.x + x, vVector.y + y, vVector.z+z);
Для остальных операторов то же самое.
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
23.01.2014, 14:44     Перезагруженные функции #4
Цитата Сообщение от Vlad708 Посмотреть сообщение
MyVector(void);
Предлагаю конструктор в классе объявить следующим образом:

MyVector(float X= 0.0, float Y = 0.0, float Z = 0.0);
Убежденный
Системный программист
Эксперт С++
15298 / 6930 / 1096
Регистрация: 02.05.2013
Сообщений: 11,340
Завершенные тесты: 1
23.01.2014, 14:45     Перезагруженные функции #5
Цитата Сообщение от Vlad708 Посмотреть сообщение
Перезагруженные функции
И, кстати, правильно "перегруженные", а не "перезагруженные".
Yandex
Объявления
23.01.2014, 14:45     Перезагруженные функции
Ответ Создать тему
Опции темы

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