Задать вопрос
@Vlood_Sm
Студент ВУЗа, 3-ий курс

Как исправить ошибку E0304?

Не понимаю, откуда эта ошибка появляется. Уже изучил, почему она может вызываться, но мне это никак не помогло в поиске/решении проблемы. Что надо сделать?
Код с реализацией функций:
#pragma once

#include <vector>
#include <iostream>
#include <random>

template <typename T>
void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);
template <typename T>
void create_freeMatrixColumn(std::vector<T>& freeMatrixColumn);

template <typename T>
inline void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit)
{
	//std::vector<std::vector<T>> huge_matrix;
	std::random_device random_device; // Источник энтропии
	std::mt19937 generator(random_device()); // Генератор случайных чисел
	std::uniform_int_distribution<> distribution(lowerLimit, lowerLimit * 2);

	for (int i = 0; i < matrix[0].size(); i++)
	{
		for (int j = 0; j < matrix[0].size(); j++)
		{
			if (i == j) matrix[i][j] = distribution(generator);
			else matrix[i][j] = rand() % 2;
		}
	}
}

template <typename T>
inline void create_freeMatrixColumn(std::vector<T> &freeMatrixColumn)
{
	for (int i = 0; i < size; i++)
		freeMatrixColumn[i] = (rand() % 100) / 10;
}

Часть кода из функции main.cpp (где вызываю/есть ошибка):
#include <iostream>
#include <vector>
#include <cmath>
#include "gauss_serial.h"
#include "gauss_parallel.h"
#include "huge_matrix.h"

bool check_answer(std::vector<double> answer, std::vector<double> freeMatrixCloumn, std::vector<std::vector<double>> matrix);
void create_new_freeColumn(std::vector<double>& v, std::vector<double>& answer, std::vector<std::vector<double>> matrix);
void keep_4_digits_after_point(std::vector<double>& v);

int main()
{
    setlocale(LC_ALL, "utf-8");

    int m; // количество строк
    int n; // количество столбцов
    double value; // значение элемента массива
    std::vector<std::vector<double>> matrix_s, matrix_p, matrixForChecking; // матрица элементов без столбца свободных членов
    std::vector<double> freeMatrixColumn_s, freeMatrixColumn_p, freeMatrixColumnForChecking; // столбец свободных членов

    printf("Решение СЛАУ методом Гаусса\n");
    // Задаём размерность матрицы
    printf("Укажите размерность матрицы\n");
    printf("Количество строк: ");
    std::cin >> m;
    matrix_s.resize(m);
    matrix_p.resize(m);
    matrixForChecking.resize(m);
    printf("Количество столбцов: ");
    std::cin >> n;

    create_huge_matrix(matrix_s, 5);
    create_huge_matrix(matrix_p);
    create_huge_matrix(matrixForChecking);
  • Вопрос задан
  • 619 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Не понимаю, откуда эта ошибка появляется


Здесь написано, что create_huge_matrix принимает два аргумента, и второй имеет такой же тип, как тип элементов внутреннего вектора:
template <typename T>
void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);


а здесь первый аргумент типа std::vector<std::vector<double>>, а второй -- int:
create_huge_matrix(matrix_s, 5);

а здесь вообще только один аргумент:
create_huge_matrix(matrix_p);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы