Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 3

Шаблоны класса:Матрица. Ошибка бинарный "=": не найден оператор, принимающий правый операнд типа "Matr<T>"

27.05.2018, 19:35. Показов 1388. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выдает ошибку "бинарный "=": не найден оператор, принимающий правый операнд типа "Matr<T>" (или приемлемое преобразование отсутствует)
1> with
1> [
1> T=double
1> ]
1> c:\users\\desktop\лаб\лаб\matr.h(28): может быть "Matr<T> &Matr<T>::operator =(Matr<T> &)"
1> with
1> [
1> T=int
1> ]
1> при попытке сопоставить список аргументов "(Matr<T>, Matr<T>)"
1> with
1> [
1> T=int
1> ]
1> and
1> [
1> T=double
1> ]"

Подскажите, пожалуйста, как можно решить эту проблему?

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
#ifndef MATR_H
#define MATR_H
 
template <class T>
class Matr
{
    unsigned n, m;
    T *p;
 
public:
    Matr();
    Matr(unsigned N, unsigned M);
    Matr(Matr&B);
 
    ~Matr(){delete[]p;p=0;}
 
    /*T& operator[](unsigned I, unsigned J)
        {
            return p[I*m+J];
        }
 
    const T& operator[](unsigned I, unsigned J) const
        {
            return p[I*m+J];
        }*/
 
 
    Matr & operator = (Matr &B);
 
    template <class T>
    friend istream & operator>>(istream &stream, Matr<T>&B);
 
    template <class T>
    friend ostream & operator<<(ostream &stream, Matr<T>&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
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
#ifndef MATR_CPP
#define MATR_CPP
 
#include<iostream>
#include<fstream>
#include<iomanip>
#include<windows.h>
using namespace std;
#include "Matr.h"
 
template <class T>
Matr<T>::Matr() 
{
    n=2;
    m=2;
    p=new T[n*m];
}
 
template <class T>
Matr<T>::Matr(unsigned N, unsigned M) 
{
    n=N;
    m=M;
    p=new T[n*m];
}
 
template <class T>
Matr<T>::Matr(Matr<T>&B) 
{
    n=B.n;
    m=B.m;
    p=new T[n*m];
    for(unsigned i=0; i<n; i++)
        for(unsigned j=0; j<m; j++)
            p[i*j]=B(i,j);
}
 
template <class T>
Matr<T> &Matr<T>::operator=(Matr<T> &)
    {
        if(this==&B)
            return *this;
        n=B.n;
        m=B.m;
        delete []p;
        p=new T[n];
        for(unsigned i=0; i<n; i++)
            for(unsigned j=0; j<m; j++)
                p[i*j]=B(i,j);
    }
 
template <class T>
istream &operator>>(istream &stream, Matr<T> &B)
{
    for (unsigned i=0; i<B.n; i++)
        for (unsigned j=0; j<B.m; j++)
            stream>>B(i,j);
    return stream;
}
 
template <class T>
ostream &operator<<(ostream &stream, Matr<T>& B)
{
    for (unsigned i=0; i<B.n; i++)
    {
        for (unsigned j=0; j<B.m; j++)
            stream<<setw(4)<<B(i,j);
            cout<<endl;
    }
    return stream;
}
#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<fstream>
#include<iomanip>
#include<windows.h>
using namespace std;
#include"Matr.h"
#include"Matr.cpp"
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Matr<int> A;
    Matr<double> C;
    
 
 
 
    cout<<"Введите матрицу A"<<endl;
    cin>>A;
    cout<<"Матрица A:"<<endl;
    cout<<A<<endl;
 
    cout<<"Введите матрицу С"<<endl;
    cin>>C;
    cout<<"Матрица С:"<<endl;
    cout<<C<<endl;
 
    A=C;
    cout<<"Матрица С:"<<endl;
    cout<<C<<endl;
 
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2018, 19:35
Ответы с готовыми решениями:

Ошибка C2679: бинарный '=': не найден оператор, принимающий правый операнд типа 'double'
// ConsoleApplication2.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &quot;math.h&quot; ...

Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа
void SerializeInstitute(ofstream&amp; fileStream, Institute imi) { fileStream &lt;&lt; &quot;Course{\n&quot; &lt;&lt; endl &lt;&lt; &quot;Students: &quot; &lt;&lt;...

Ошибка : бинарный "<<": не найден оператор, принимающий правый операнд типа point
В задаче нужно найти две наиболее удаленные друг от друга очки. выдает следующую ошибку: error C2679: бинарный &quot;&lt;&lt;&quot;: не...

3
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
27.05.2018, 20:06
snikita, шаблонны нельзя разделять по разным файлам.
Тут подробней
0
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 3
28.05.2018, 09:18  [ТС]
Cortas, не помогло, выдает такую же ошибку
0
 Аватар для Cortas
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
28.05.2018, 09:40
C++
1
Matr<T> & operator = (Matr<T> &B);
Для такого присваивания тип данных матрицы в которую записывают данные должна совпадать с типом матрицы откуда записывают, а у вас типы различны - int и double
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2018, 09:40
Помогаю со студенческими работами здесь

Бинарный "<<": не найден оператор, принимающий правый операнд типа "item". Не могу вывести в консоль объект класса
Бинарный &quot;&lt;&lt;&quot;: не найден оператор, принимающий правый операнд типа &quot;item&quot; (или приемлемое преобразование отсутствует). #include...

Ошибка: Не найден оператор, принимающий правый операнд типа 'overloaded-function'
Всем привет, такая проблема при выполнении лабораторной работы (не знаю кому это интересно, но все же), так вот, суть проблемы в чем: ...

Ошибка в коде. не найден оператор, принимающий правый операнд типа 'int'
Доброго времени суток. Не понимат что за ошибка: error C2679: бинарный '&gt;': не найден оператор, принимающий правый операнд типа 'int' (или...

Бинарный "=": не найден оператор, принимающий правый операнд типа
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iterator&gt; #include &lt;string&gt; #include &lt;list&gt; #include &lt;vector&gt;...

Ошибка в VS: бинарный "=": не найден оператор, принимающий правый операнд типа "complex"
Помогите решить ошибку. Ошибка в VS: бинарный &quot;=&quot;: не найден оператор, принимающий правый операнд типа &quot;complex&quot;(или приемлемое...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru