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

Необъявленный идентификатор при создании потока

16.11.2020, 22:58. Показов 785. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При компиляции выскакивает Source.cpp(99,32): error C2065: tr: необъявленный идентификатор.
Подскажите, как решить эту проблему.
Заранее спасибо всем!
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
#include<stdexcept>
#include<thread>
#include<vector>
 
using namespace std;
 
class Matrix {
private:
    float** matrix;
    int row;
    int column;
public:
    Matrix(int dim) {
        this->matrix = new float* [dim];
        for (auto i = 0; i < dim; i++) {
            matrix[i] = new float[dim];
        }
        this->row = dim;
        this->column = dim;
    }
    Matrix(int dim1, int dim2) {
        matrix = new float* [dim1];
        for (auto i = 0; i < dim1; i++) {
            matrix[i] = new float[dim2];
        }
        this->row = dim1;
        this->column = dim2;
    }
    ~Matrix() {
        this->delete_matrix();
    }
public:
    int get_row() {
        return this->row;
    }
    int get_column() {
        return this->column;
    }
    float** get_matrix() {
        return this->matrix;
    }
    float get_element(int i, int j) {
        if (i < this->row && j < this->column) {
            return this->matrix[i][j];
        }
        else {
            throw (invalid_argument("Dimmensins don't match"));
        }
    }
    void set_element(int i, int j, float new_element) {
        if (i < this->row && j < this->column) {
            this->matrix[i][j] = new_element;
        }
        else {
            throw (invalid_argument("Dimmensins don't match"));
        }
    }
    void delete_matrix() {
        for (auto i = 0; i < this->row; i++)
            delete[]this->matrix[i];
        this->row = 0;
        this->column = 0;
    }
    void ones() {
        for (auto i = 0; i < this->row; i++)
            for (auto j = 0; j < this->column; j++)
                this->matrix[i][j] = 1;
    }
    void zeros() {
        for (auto i = 0; i < this->row; i++)
            for (auto j = 0; j < this->column; j++)
                this->matrix[i][j] = 0;
    }
    void fill(float elements[], int ele_dim) {
        if (ele_dim != this->row * this->column) {
            throw (invalid_argument("Dimmensins don't match"));
        }
        else {
            for (auto i = 0; i < this->row; i++)
                for (auto j = 0; j < this->column; j++)
                    this->matrix[i][j] = elements[this->row * i + j];
        }
    }
    Matrix operator= (Matrix matr) {
        this->delete_matrix();
        Matrix newMatrix(matr.get_row(), matr.get_column());
        for (auto i = 0; i < this->row; i++)
            for (auto j = 0; j < this->column; j++)
                newMatrix.set_element(i, j, matr.get_element(i, j));
    }
    float determinant() { //multithreading on //must be tested
        vector<thread> threadList;
        float det = 1;
        Matrix temp(this->row, this->column); // create temp matrix
        for (auto i = 0; i < this->row; i++)
            for (auto j = 0; j < this->column; j++)
                temp.set_element(i, j, this->get_element(i, j)); // copy original matrix to temp
        for (auto i = 0; i < this->row; i++) {
            threadList.push_back(thread(tr, temp, i));
        }
        for (auto i = 0; i < threadList.size(); i++) {
            threadList.at(i).join();
        }
        for (auto i = 0; i < temp.get_row(); i++)
            det *= temp.get_element(i, i);
        return det;
    }
};
 
 
    float find_nulif(float a, float b) {
        return -b / a;
    }
    void tr(Matrix matrix, int iter_no) {
        float nulifier = find_nulif(matrix.get_element(iter_no, iter_no), matrix.get_element(iter_no + 1, iter_no + 1));
        for (auto i = 0; i < matrix.get_row(); i++) {
            matrix.set_element(iter_no + 1, i, matrix.get_element(iter_no, i) * nulifier + matrix.get_element(iter_no + 1, i));
        }
    }
 
int main() {
    Matrix matr = Matrix(3);
    float elem[9] = { 1,2,3,4,1,6,7,1,9 };
    matr.fill(elem, 9);
    float det = matr.determinant();
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2020, 22:58
Ответы с готовыми решениями:

Ошибка "Необъявленный идентификатор" при создании конструктора в наследственном классе
Выдает ошибку Необъявленный идентификатор a b,когда создаю конструктор в наследственном классе #include &quot;stdafx.h&quot; #include...

Ошибка при работе со списком: необъявленный идентификатор
не могу исправить ошибки((( #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt; using namespace std; template&lt;class...

Необъявленный идентификатор при работе с классами (функция сравнивает значение свойств объектов)
На идентификаторы power top_speed acceleration weight по 4 раза на каждый матюкается компилятор. Как правильно сравнить их содержимое? ...

5
38 / 13 / 3
Регистрация: 30.09.2020
Сообщений: 65
16.11.2020, 23:11
Поставь в самое начало
C++
1
void tr(Matrix matrix, int iter_no);
Ибо ты не описал хейдер. А объявление функции ниже.

Добавлено через 41 секунду
Хотя тут в любом случае нужно объявить функцию в хейдере.
0
0 / 0 / 0
Регистрация: 16.11.2020
Сообщений: 2
16.11.2020, 23:32  [ТС]
Цитата Сообщение от Ligren Посмотреть сообщение
Поставь в самое начало
C++
1
void tr(Matrix matrix, int iter_no);
Ибо ты не описал хейдер. А объявление функции ниже.

Добавлено через 41 секунду
Хотя тут в любом случае нужно объявить функцию в хейдере.
Ошибок стало только больше(
Source.cpp(8,9): error C2065: Matrix: необъявленный идентификатор
Source.cpp(8,16): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "matrix"
Source.cpp(102,32): error C2065: tr: необъявленный идентификатор
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.11.2020, 23:35
Цитата Сообщение от FSquirrel Посмотреть сообщение
При компиляции выскакивает Source.cpp(99,32): error C2065: tr: необъявленный идентификатор.
Цитата Сообщение от Ligren Посмотреть сообщение
Поставь в самое начало
C++
1
2
3
4
5
6
7
8
9
10
11
12
......................
using namespace std;
 
class Matrix;
 
void tr(Matrix matrix, int iter_no);
 
class Matrix 
{
 
private:
......................................
Добавлено через 1 минуту
void tr(Matrix &matrix, int iter_no)

Добавлено через 54 секунды
И сделай конструктор копирования для класса Matrix, можно просто объявить без реализации
0
38 / 13 / 3
Регистрация: 30.09.2020
Сообщений: 65
16.11.2020, 23:36
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
void tr(Matrix &matrix, int iter_no)
Кстати да, он должен быть передан по ссылке. Иначе компилятор создаст клон, который передаст в функцию.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.11.2020, 23:39
Цитата Сообщение от Ligren Посмотреть сообщение
Кстати да, он должен быть передан по ссылке. Иначе компилятор создаст клон, который передаст в функцию.
Именно, а при выходе сделает
Цитата Сообщение от FSquirrel Посмотреть сообщение
~Matrix() {
        this->delete_matrix();
    }
И будет другая ошибка, уже в рантайме
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2020, 23:39
Помогаю со студенческими работами здесь

Необъявленный идентификатор j
Нужно сформировать квадратную матрицу вида: 1 2 ...... n n n-1 ..... 1 1 2 ...... n n n-1 ..... 1 ............... ...

Необъявленный идентификатор
Всем привет! Кто может помочь с кодом? Где моя ошибка. Нужно было написать программу для определения площади прямоугольника, треугольника,...

необъявленный идентификатор
#include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int vichis(int,int,int&amp;); void cifri(int); void main() { int a; ...

Необъявленный идентификатор
Нужно исправить код, некоторые ошибки я нашел, но ничего не могу поделать с i (i: необъявленный идентификатор), (идентификатор i не...

Необъявленный идентификатор
И снова ВСЕМ добрый вечер!!!:) Написав десяток примеров из книги, в качестве упражнений для себя и закрепления материала решил на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru