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

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

Войти
Регистрация
Восстановить пароль
 
Whitemorn
2 / 2 / 1
Регистрация: 06.10.2016
Сообщений: 36
Завершенные тесты: 1
#1

Что обозначают эти ошибки? - C++

23.11.2016, 21:49. Просмотров 156. Ответов 9
Метки нет (Все метки)

Файл main()
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
#include "stdafx.h"
#include "vector2.h"
#include <iostream>
 
int main()
{
    
    vector2 Obj(2500,50);
    vector2 Pos(10, 2);
    double startSpeed = 700;
    vector2 gravity(0,-10);
    vector2 dist = Obj - Pos;
    double Path = dist.Len();
    double absTime = Path/startSpeed;
    vector2 abc = dist.Norm();
    vector2 Speed = abc * startSpeed;
    double iTime = absTime;
 
    for(int i = 1; i <= iTime; i++)
    {
        Pos += Speed;
        Speed += gravity;
    }
    return 0;
}



Файл vector2.ccp
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "StdAfx.h"
#include "vector2.h"
 
vector2::vector2(void)
{
    x = 0;
    y = 0;
}
 
vector2::vector2( float _x, float _y )
{
    Init(_x, _y);
}
 
vector2::~vector2(void)
{
}
 
void vector2::Init( float _x, float _y )
{
    x = _x;
    y = _y;
}
 
bool vector2::operator==( const vector2& val ) const
{
    return true;
}
 
vector2 vector2::operator+( vector2& vec )
{
    vector2 result(this->x+vec.x, this->y + vec.y);
    return result;
 
}
 
void vector2::operator+=( vector2& vec )
{
    this->x = this->x +  vec.x;
    this->y = this->y + vec.y;
}
 
float vector2::Len()
{
    return sqrt(x*x + y*y);
}
 
vector2 vector2::Norm()
{
    vector2 result;
    result.x = this->x / this->Len();
    result.y = this->y /this->Len();
    return result;
}
 
void vector2::operator-=( vector2& vec )
{
    this->x = this->x - vec.x;
    this->y = this->y - vec.y;
}
 
double vector2::operator*( vector2& vec )
{
    double result;
    result = (this->x * vec.x, this->y * vec.y);
    return result;
 
 
}
 
void vector2::operator*=( float val )
{
    this->x = this->x * val;
    this->y = this->y * val;
}
 
vector2 vector2::operator-( vector2& vec )
{
    vector2 result(this->x - vec.x, this->y - vec.y);
    return result;
}
Ругается такими ошибками:
1>c:\users\ya-an\desktop\*\c++\vectors — копия\vectors\vectors.cpp(16) : error C2679: бинарный '*': не найден оператор, принимающий правый операнд типа 'double' (или приемлемое преобразование отсутствует)
1> c:\users\ya-an\desktop\*\c++\vectors — копия\vectors\vector2.h(14): может быть 'double vector2::operator *(vector2 &)'
1> при попытке сопоставить список аргументов '(vector2, double)'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2016, 21:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что обозначают эти ошибки? (C++):

Разъясните что обозначают эти ошибки? - C++
Функция main() #include &quot;stdafx.h&quot; #include &quot;vector2.h&quot; int main() { vector2 Obj(2500,50); vector2 Pos(10, 2); float...

Подскажите что обозначают выделенные строки. - C++
Что обозначают 10,11 и 12 строки??? Заране спасибо. Я знаю что printf -вывод параметров на дисплей, а \n -управляющая последовательность....

Найти ошибки в коде и исправить эти ошибки (Наследование) - C++
Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков: list.h (inline) #pragma once class list...

Найти ошибки в коде и исправить эти ошибки - C++ - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить откуда. A.h #pragma once ...

Найти ошибки в коде и исправить эти ошибки - C++
Есть у меня вот такой код: #include &lt;iostream&gt; using namespace std; class A{ private: int* a; size_t size_; ...

Как исправить эти ошибки - C++
как исправить ети ошибки Код: #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; #define n 10 struct Krainy { ...

9
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
23.11.2016, 22:04 #2
Где ещё один файл?
0
Whitemorn
2 / 2 / 1
Регистрация: 06.10.2016
Сообщений: 36
Завершенные тесты: 1
23.11.2016, 22:04  [ТС] #3
Файл vector2.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include <math.h>
class vector2
{
public:
    vector2(void);
    ~vector2(void);
    void Init(float _x, float _y);
    vector2(float _x, float _y);
    bool operator== (const vector2& val) const;
    vector2 operator+ (vector2& vec);
    void operator+= (vector2& vec);
    void operator-= (vector2& vec);
    double operator* (vector2& vec);
    void operator*= (float val);
    vector2 operator- (vector2& vec);
    float Len();
    vector2 Norm();
protected:
    float x;
    float y;
};
0
nmcf
6207 / 5518 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
23.11.2016, 22:06 #4
vectors.cpp, строка 16. Что там?
0
Whitemorn
2 / 2 / 1
Регистрация: 06.10.2016
Сообщений: 36
Завершенные тесты: 1
23.11.2016, 22:11  [ТС] #5
В 16:
C++
1
vector2 Speed = abc * startSpeed;
А в 14:
C++
1
double operator* (vector2& vec);
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
23.11.2016, 22:32 #6
Типы abc и startSpeed?
0
Whitemorn
2 / 2 / 1
Регистрация: 06.10.2016
Сообщений: 36
Завершенные тесты: 1
23.11.2016, 22:41  [ТС] #7
StartSpeed и abc это переменные
StartSpeed - double
abc - vector

Добавлено через 2 минуты
Т.е. с startSpeed все понятно
abc - сделал так чтобы не писать
C++
1
vector2 Speed = dist.Norm() * startSpeed;
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
23.11.2016, 22:54 #8
Цитата Сообщение от Whitemorn Посмотреть сообщение
бинарный '*': не найден оператор, принимающий правый операнд типа 'double' (или приемлемое преобразование отсутствует)
Нет у тебя в классе оператора умножения с параметром типа double.
0
Whitemorn
2 / 2 / 1
Регистрация: 06.10.2016
Сообщений: 36
Завершенные тесты: 1
23.11.2016, 22:57  [ТС] #9
Цитата Сообщение от nd2 Посмотреть сообщение
Нет у тебя в классе оператора умножения с параметром типа double.
Это не то?
C++
1
double operator* (vector2& vec);
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
23.11.2016, 23:10 #10
Цитата Сообщение от Whitemorn Посмотреть сообщение
Это не то?
Нет, это для двух векторов.
0
23.11.2016, 23:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 23:10
Привет! Вот еще темы с ответами:

Найти причины возникновения ошибок и исправить эти ошибки - C++
Доброго времени суток, Уважаемые! Есть данный код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;sstream&gt; #include &lt;string&gt; ...

Найти причины возникновения ошибок и исправить эти ошибки - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; void sum(); int main() {

Найти причины возникновения ошибок в коде и исправить эти ошибки - C++
Всем хай. Во-первых, vs не видит в мейне V и говорит, что она не инициализирована, но на идеоне оно компилируется и даже работает, НО не...

Найти причины возникновения ошибок в коде и исправить эти ошибки - C++
Не пойму на что ругается и как исправить.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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