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

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

Войти
Регистрация
Восстановить пароль
 
SOM3BODY
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 11
#1

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

20.06.2013, 14:49. Просмотров 434. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2013, 14:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос no operator found which takes a right/left-hand operand of type "AR" (C++):

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

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

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

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

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

Ошибка в коде "no match for 'operator[]' (operand types are 'Student' and 'int')" - C++
Помогите пожалуйста разобраться, в чём проблема? Весь код: #include &quot;windows.h&quot; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
20.06.2013, 15:15 #2
Чтобы это работало
endl<< array1 << endl
Нужно перегрузить операцию <<
1
SOM3BODY
0 / 0 / 0
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2013, 16:15
Привет! Вот еще темы с ответами:

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char - C++
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при предоставлении имени.Знаю,что код можно было написать проще...

Ошибка в Eclipse "Type Program "make" not found in PATH" - C++
Установил на комп Eclipse, MinGW, попробовал запустить уже готовый хэлловорлд, эклипс выдал ошибку &quot;Program &quot;make&quot; not found in PATH&quot;....

Проверить правильность кода. Вылезает Error 5 error C2679: binary '<<' : no operator found which takes a right - C++
Компилятор ругается на ошибку Error 5 error C2679: binary '&lt;&lt;' : no operator found which takes a right-hand operand of type 'Kniga' ...

Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" - C++
Помогите, пожалуйста, исправить ошибку в программе. #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;windows.h&quot; #include &lt;conio.h&gt; ...


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

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

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