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

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

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

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

23.01.2014, 14:37. Просмотров 192. Ответов 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++ определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
использование массива из функции в другой функции C++
C++ Функции: определить значение сложной функции
C++ C++ Функции Массив (переписать в виде функции)
Функции.Зачем нужны void функции? C++
C++ Не работают функции <math.h> в методе (функции-члене)
Применение переменных одной функции в другой функции C++
C++ Работа функции qsort - объяснить работу функции
C++ Перевести код из функции в шаблоны функции
Разница в работе созданной функции и основной функции C++
C++ Передача функции в качестве параметра функции
C++ Составить функции вычисления определённого интеграла от функции f(x)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Extrim88
 Аватар для 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.
Убежденный
Системный программист
 Аватар для Убежденный
14666 / 6612 / 1047
Регистрация: 02.05.2013
Сообщений: 10,887
Завершенные тесты: 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
 Аватар для 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);
Убежденный
Системный программист
 Аватар для Убежденный
14666 / 6612 / 1047
Регистрация: 02.05.2013
Сообщений: 10,887
Завершенные тесты: 1
23.01.2014, 14:45     Перезагруженные функции #5
Цитата Сообщение от Vlad708 Посмотреть сообщение
Перезагруженные функции
И, кстати, правильно "перегруженные", а не "перезагруженные".
Yandex
Объявления
23.01.2014, 14:45     Перезагруженные функции
Ответ Создать тему
Опции темы

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