uarc40960 Ответов: 1

Выброшенное исключение: нарушение доступа (класс собственной матрицы)


Итак, я использую библиотеку матриц Eigen (версия 3.3.7), и я пытаюсь проверить вещи и увидеть, что все идет хорошо. Однако о тестовой программе ниже:

Что я уже пробовал:

#include <iostream>
#include <sstream>

#include <Eigen/Dense>

using namespace std;
using namespace Eigen;

int main()
{
	cout << "Hello World!" << endl;

	MatrixXd A;
	A << 1, 2, 3,
		4, 5, 6,
		7, 8, -9;

	cout << A << endl;

	cin.get();
	return 0;
}


Я получаю ошибку:

<pre>"Exception thrown at 0x________ in Matrices.exe: 0xC0000005: Access violation writing location 0x00000000."


Как ни странно, все идет нормально, если я инициализировать объект matrix3d вместо MatrixXd. Может ли кто-нибудь помочь мне и выяснить, как это исправить?

MadMyche

Как вы это компилируете?

uarc40960

Визуальная Студия

1 Ответов

Рейтинг:
11

Rick York

Это работает для меня:

Eigen::MatrixXd a( 3, 3 );
a << 1, 2, 3,
     4, 5, 6,
     7, 8, 9;

std::stringstream s;
s << a;

trace( "%s\n", s.str().data() );
трассировка-это функция вывода, которую я использую в своих приложениях. Проблема в том, что MatrixXd-это динамическая матрица, и вы должны сначала сказать ей, насколько велика матрица.


uarc40960

Большое спасибо!

Maciej Los

5ed!

Rick York

- Спасибо, сэр.