Форум программистов, компьютерный форум 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. Просмотров 431. Ответов 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");
}
Подскажите как мне её исправить, заранее благодарен.
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"
Посмотрите здесь:

Ошибка "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:

right-hand operand - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; using namespace std; const int n=3; template&lt;class T&gt;T after_C(T *m,int...

Исправить ошибку компиляции "no overloaded function takes 3 arguments" - C++
Как исправить эту ошибку(&quot;jkl&quot;)? int main() { cout &lt;&lt; &quot;Simulation started&quot; &lt;&lt;endl; TrainingDepartment TD(&quot;jkl&quot;, 457,...

Ошибка: macro "double" passed 2 arguments but takes just 1 - C++
macro &quot;double&quot; passed 2 arguments but takes just 1

Ошибка argument of type "CGroup *" is incompatible with parameter of type "CGroup *" - C++
Задача состоит в том, чтобы на основе текстовых файлов сделать подобие базы данных. Есть 3 связанных таблицы: группы, студенты, оценки. ...

IntelliSense: operand types are incompatible ("int" and "int *") - C++
void Map::showmap() //вывод карты на экран { for ( int i = 0; i &lt; s; i++) { for ( int j = 0; j &lt; c; j++) { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
20.06.2013, 15:15     no operator found which takes a right/left-hand operand of type "AR" #2
Чтобы это работало
endl<< array1 << endl
Нужно перегрузить операцию <<
SOM3BODY
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 11
20.06.2013, 16:15  [ТС]     no operator found which takes a right/left-hand operand of type "AR" #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

В чем проблема?
Ответ Создать тему
Опции темы

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