Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 13.12.2012
Сообщений: 11
1

no operator found which takes a right/left-hand operand of type "AR"

20.06.2013, 14:49. Показов 1044. Ответов 2
Метки нет (Все метки)

Нашел на форуме исходник программы, собрал, но выдает ошибку описанную выше
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <conio.h>
#include <string.h>
#include <assert.h>
using namespace std;
class AR{ 
public:
  AR(int=5);
  AR(const AR&);
  ~AR();
int getSize() const;
const AR &operator=(double);
int operator==(const AR&) const;
int operator!=(const AR&) const;
 
double &operator[](int);
static int getCount();
 
private:
double *ptr;
int size;
static int arrCount;
};
 
AR::AR(int arrSize)
{
++arrCount;
size=arrSize;
ptr=new double[size];
assert(ptr!=0);
for(int i=0;i<size;i++)
ptr[i]=0;
}
AR::AR(const AR&init)
{
++arrCount;
size=init.size;
ptr=new double[size];
assert(ptr!=0);
for (int i=0;i<size;i++)
ptr[i]=init.ptr[i];
}
AR::~AR()
{
--arrCount;
delete []ptr;
cout<<"Destructor Vizvan dlya vectora s razmerom :"<<size<<endl;
}
int AR::getSize()const {return size;}
const AR &AR::operator=(double right)
{
ptr=new double[size];
assert(ptr!=0);
for (int i=0;i<size;i++)
ptr[i]=right;
return*this;
}
int AR::operator==(const AR&right) const
{
if(size!=right.size)
return 0;
for (int i=0;i<size;i++)
if (ptr[i]!=right.ptr[i] )
return 0;
return 1;
}
int AR::operator!=(const AR &right) const
{
if (size !=right.size)
return 1;
for (int i=0;i<size;i++)
if (ptr[i]!=right.ptr[i] )
return 1;
return 0;
}
double &AR::operator[](int ind)
{
assert (0<=ind&&ind<size);
return ptr[ind];
}
int AR::getCount() {return arrCount;}
 
#include <iostream>
 void main()
{
    
    AR array1(5),array2(5);
    cout << "Razmer massiva #1: " <<array1.getSize() <<endl;
    cout << "Massiv posle zadaniya nachalnyh znacheniy: " << endl<< array1 << endl;
    cout << "Razmer massiva #2: " << array2.getSize() << endl;
    cout << "Massiv posle zadaniya nachalnyh znacheniy: " << endl << array2 << endl;
    cout << "Vvedite 10 celih chisel: " << endl;
    cin >> array1 >> array2;
    cout << "Massivi soderjat: " << endl
         << "array#1: " << array1
         << "array#2: " << array2 << endl;
    cout << "Ocenka array#1!=array#2" << endl;
    if (array1!=array2) cout<<"Oni ne ravni"<<endl; else cout<<"Oni ravni"<<endl;
    double right2;
    cout<<"Vvedite chislo double: "<<endl;
    cin>>right2;
    cout<<"Prisvoim znachenie double -> array#2:"<<endl<<array2<<endl;
    cout<<"Prisvaivaem znachenie array#2 -> array#1: "<<endl;
    array1 = array2;
    cout<<"array#1: "<<array1<<endl;
    cout<<"array#2: "<<array2<<endl;
    cout<<"Ocenka: array#1==array#2"<<endl;
    if (array1==array2) cout<<"Oni ravni"<<endl; else cout<<"Oni ne ravni"<<endl;
    cout<<"array#1[4] = "<<array1[4]<<endl;
    double e;
    cout<<"Vvedite chislo "<<endl;
    cin>>e;
    cout<<"Prisvaivanie chisla elementu array1[4]"<<endl;
    array1[4]=e;
    cout<<"array1 :"<<array1<<endl;
    system("pause");
}
Подскажите как мне её исправить, заранее благодарен.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2013, 14:49
Ответы с готовыми решениями:

Ошибка "binary '==': no operator found which takes a left-hand operand of type"
while (currentNode != endNode) { nextNode = path; nextNode1 = path; takeRoute.x =...

Binary '==' no operator found which takes a left-hand operand of type 'T'
Здравствуйте. Пытаюсь сравнить элемент массива с объектом,который я создаю в мейн и компилятор...

Исправить ошибку "error C2679: binary '*' : no operator found which takes a right-hand operand of type"
matiza.h #pragma once template &lt;typename N&gt; class matriza { protected: int stroka; N...

Ошибка binary '=' : no operator found which takes a right-hand operand of type
Ошибка Erro1 error C2679: binary '=' : no operator found which takes a right-hand operand of type...

2
136 / 128 / 59
Регистрация: 13.12.2012
Сообщений: 293
20.06.2013, 15:15 2
Чтобы это работало
endl<< array1 << endl
Нужно перегрузить операцию <<
1
1 / 1 / 1
Регистрация: 13.12.2012
Сообщений: 11
20.06.2013, 16:15  [ТС] 3
Спасибо за помощь.

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <conio.h>
#include <string.h>
#include <assert.h>
#include <iostream>
using namespace std;
class AR{ 
    friend ostream &operator<< (ostream &, const AR &);
friend istream &operator>> (istream &, AR &);
public:
  AR(int=5);
  AR(const AR&);
  ~AR();
int getSize() const;
const AR &operator=(double);
int operator==(const AR&) const;
int operator!=(const AR&) const;
 
double &operator[](int);
static int getCount();
 
private:
double *ptr;
int size;
static int arrCount;
};
 
AR::AR(int arrSize)
{
++arrCount;
size=arrSize;
ptr=new double[size];
assert(ptr!=0);
for(int i=0;i<size;i++)
ptr[i]=0;
}
AR::AR(const AR&init)
{
++arrCount;
size=init.size;
ptr=new double[size];
assert(ptr!=0);
for (int i=0;i<size;i++)
ptr[i]=init.ptr[i];
}
AR::~AR()
{
--arrCount;
delete []ptr;
cout<<"Destructor Vizvan dlya vectora s razmerom :"<<size<<endl;
}
int AR::getSize()const {return size;}
const AR &AR::operator=(double right)
{
ptr=new double[size];
assert(ptr!=0);
for (int i=0;i<size;i++)
ptr[i]=right;
return*this;
}
int AR::operator==(const AR&right) const
{
if(size!=right.size)
return 0;
for (int i=0;i<size;i++)
if (ptr[i]!=right.ptr[i] )
return 0;
return 1;
}
int AR::operator!=(const AR &right) const
{
if (size !=right.size)
return 1;
for (int i=0;i<size;i++)
if (ptr[i]!=right.ptr[i] )
return 1;
return 0;
}
double &AR::operator[](int ind)
{
assert (0<=ind&&ind<size);
return ptr[ind];
}
istream &operator>>(istream &input,AR &a)
{
for (int i=0;i<a.size;i++)
input>>a.ptr[i];
return input;
}
 
 
ostream &operator<<(ostream &output,const AR &a)
{
    for (int i=0;i<a.size;i++){
output<<a.ptr[i]<<" ";
if ((i+1)%10==0)
output<<endl;
return output;}
}
int AR::getCount() {return arrCount;}
 
 
#include <iostream>
int main()
{
    
    AR array1(5),array2(5);
    cout<<"Razmer massiva #1: "<<array1.getSize()<<endl;
    cout<<"Massiv posle zadaniya nachalnyh znacheniy: "<<endl<<array1<<endl;
    cout << "Razmer massiva #2: " << array2.getSize() << endl;
    cout << "Massiv posle zadaniya nachalnyh znacheniy: " << endl << array2 << endl;
    cout << "Vvedite 10 celih chisel: " << endl;
    cin >> array1 >> array2;
    cout << "Massivi soderjat: " << endl
         << "array#1: " << array1
         << "array#2: " << array2 << endl;
    cout << "Ocenka array#1!=array#2" << endl;
    if (array1!=array2) cout<<"Oni ne ravni"<<endl; else cout<<"Oni ravni"<<endl;
    double right2;
    cout<<"Vvedite chislo double: "<<endl;
    cin>>right2;
    cout<<"Prisvoim znachenie double -> array#2:"<<endl<<array2<<endl;
    cout<<"Prisvaivaem znachenie array#2 -> array#1: "<<endl;
    array1 = array2;
    cout<<"array#1: "<<array1<<endl;
    cout<<"array#2: "<<array2<<endl;
    cout<<"Ocenka: array#1==array#2"<<endl;
    if (array1==array2) cout<<"Oni ravni"<<endl; else cout<<"Oni ne ravni"<<endl;
    cout<<"array#1[4] = "<<array1[4]<<endl;
    double e;
    cout<<"Vvedite chislo "<<endl;
    cin>>e;
    cout<<"Prisvaivanie chisla elementu array1[4]"<<endl;
    array1[4]=e;
    cout<<"array1 :"<<array1<<endl;
    return 0;
    system("pause");
}
Перегрузил ввод, вывод.

Компилируется без проблем, при билде выдает ошибки:
Error 1 error LNK2001: unresolved external symbol "private: static int AR::arrCount" (?arrCount@AR@@0HA) lab3_3.obj
Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\adm\Desktop\Лабы\Новая папка\lab3_4\Debug\lab3_4.exe

В чем проблема?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2013, 16:15

Error C2679: binary '>>': no operator found which takes a right-hand operand of type
нужно написать программу обработки структур. в программе использовать структуру, содержащую поля с...

Ошибка: error C2679: binary '<<' : no operator found which takes a right-hand operand of type
Нужно создать класс List для представления простого списка. Подскажите, почему появляется такая...

No operator found which takes a right-hand operand
Кто подскажет в чем ошибка? #include &lt;iostream&gt; #include &lt;vector&gt; class LongNumber {...

Ошибка: "binary '=' no operator found which takes a right-hand operand"
Добрый день. Пытаюсь функцией вернуть массив byte. Пишу так: STDMETHODIMP...


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

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

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