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

Ошибка в класе вектор - C++

Войти
Регистрация
Восстановить пароль
 
kostia24
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 7
10.06.2011, 20:04     Ошибка в класе вектор #1
У меня есть Класс вектор и в нем видает 3 ошибки
error C2065: x: необъявленный идентификатор
error C2065: y: необъявленный идентификатор
error C2065: z: необъявленный идентификатор
В перегрузке оператора произведение

double operator*(vector a)
{
return a.x*x + a.y*y + a.z*z;
}
Не пойму в чем дело. С вычитанием и сложением проблем нету.

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
#include "vector.h"
 
vector::vector(double vX, double vY, double vZ) { x=vX; y=vY; z=vZ; }
vector::vector(){x=0; y=0; z=0;}
 
 
vector vector::operator+ (vector &b)
{vector temp;
temp.x =x+b.x;
temp.y =y+b.y;
temp.z =z+b.z;
 
return temp;
}
 
vector vector::operator- (vector &b)
{vector temp;
temp.x =x-b.x;
temp.y =y-b.y;
temp.z =z-b.z;
 
return temp;
}
 
double operator*(vector a)
{ 
 return a.x*x + a.y*y + a.z*z;
}
 
 
 
istream & operator>> (istream &in, vector &ob)
{
    in>> ob.x >> ob.y >> ob.z ;  
    return in;
}
ostream & operator<< (ostream &out, vector &b)
{
    out << b.x << b.y << b.z ;  
    return out;
}
 
 vector vector::operator= (vector &a)
 {x=a.x;
y=a.y;
z=a.z;
return *this;
}

Остальной код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
using namespace std;
class vector
{
 
 public:
      double x,y,z;
     
 vector(double vX, double vY, double vZ); 
 vector();
 ~vector ();
 vector operator= (vector & a);
 vector operator+ (vector & b); 
 vector operator- (vector & b); 
 double  operator*(vector a);
 friend istream & operator>>( istream &in, vector &ob);
 friend ostream & operator<<( ostream &out, vector &b);
};
#endif
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
#include <iostream>
#include "vector.h"
using namespace std;
int Menu ()
{ int number =0;
    cout<< " Выберете действие/n /t Что-бы сложить 2 вектора нажмите 1/n/t Что-бы  отнять 2 вектора нажмите 2/n/t Для получения скалярного произведения 2 векторов нажмите 3";
 cin>>number;
 return number;
}
int main ()
{
bool flag = true;
vector  vect1();
vector vect2();
vector  vect3;
 
cin>>vect1;
cin>>vect2;
 
double dob;
do
{
    switch (Menu())
    {   case 1 : vect3=vect2+vect1; cout<<vect3; break;
        case 2 : vect3=vect1-vect2; cout<<vect3; break;
        //case 3 : dob =vect2*vect1; cout<<dob; break;
        default :  
            {
                cout<< "Вы ввели неверное число"; 
                flag = false; break;
            }
    }
}
while (flag =true);
return 0;
}
Сделайте пожалуйста шаблона с класса.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 20:06     Ошибка в класе вектор #2
Вам нужно обьявить переменные x,y,z.
kostia24
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 7
10.06.2011, 20:10  [ТС]     Ошибка в класе вектор #3
x,y,z это члены класса, они должны быть видны.
Для операции сложения переменные х, у, z видны.
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.06.2011, 20:13     Ошибка в класе вектор #4
Но ошибки указывают на то, что они не обьявлены.
ЛеЖиК)
 Аватар для ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 630
10.06.2011, 20:18     Ошибка в класе вектор #5
врядли я прав(весь код не смотрел) ,но попробцуй так
C++
1
return a.x*this.x + a.y*this.y + a.z*this.z;
grizlik78
Эксперт С++
 Аватар для grizlik78
1887 / 1419 / 103
Регистрация: 29.05.2011
Сообщений: 2,967
10.06.2011, 20:19     Ошибка в класе вектор #6
vector:: в названии оператора отсутствует и описан он вне класса, значит это не член класса. если хотелось описать оператор класса, на это компилятору надо явно указать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2011, 20:43     Ошибка в класе вектор
Еще ссылки по теме:

Ошибка при выделении памяти под вектор методом resize C++
ошибка в программе с использванием вектор C++
C++ Умножение матрицы на вектор. ошибка в вычислении
Ошибка при добавлении в вектор объекта типа thread C++
C++ Как завести вектор и структуру глобально в заголовочном файле или в чем ошибка

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

Или воспользуйтесь поиском по форуму:
kostia24
0 / 0 / 0
Регистрация: 30.09.2010
Сообщений: 7
10.06.2011, 20:43  [ТС]     Ошибка в класе вектор #7
Цитата Сообщение от grizlik78 Посмотреть сообщение
vector:: в названии оператора отсутствует и описан он вне класса, значит это не член класса. если хотелось описать оператор класса, на это компилятору надо явно указать.
Спасибо, все элементарно.
Yandex
Объявления
10.06.2011, 20:43     Ошибка в класе вектор
Ответ Создать тему
Опции темы

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