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

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

Восстановить пароль Регистрация
 
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
23.01.2014, 14:37     Перезагруженные функции #1
Имеется заголовочный файл и в нём объявлен класс 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++ Определить конструкторы, функции-члены установки времени, функции получения часа, минуты и секунд
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 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);
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
23.01.2014, 14:45     Перезагруженные функции #5
Цитата Сообщение от Vlad708 Посмотреть сообщение
Перезагруженные функции
И, кстати, правильно "перегруженные", а не "перезагруженные".
Yandex
Объявления
23.01.2014, 14:45     Перезагруженные функции
Ответ Создать тему
Опции темы

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