Ошибка сегментации при вызове члена классаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка сегментации при вызове члена класса

Сообщение Anonymous »

Я получаю ошибку сегментации при вызове метода solve () из класса MySolver , но я получаю эту ошибку только тогда, когда она вызывает из другого класса, для которого он является участником. Я полагаю, что Solve () был реализован правильно, как я называл его раньше (не хранится как член класса) и получил правильный ответ. Я уменьшил проблему до минимального воспроизводимого примера.

Код: Выделить всё

#ifndef MYSOLVER_H
#define MYSOLVER_H

#include 

using Eigen::MatrixXd;
using Eigen::VectorXd;

class mySolver {

private:

/* Result vector.*/
VectorXd result;

public:

VectorXd solve(const MatrixXd&, const VectorXd&);
};

#endif // MYSOLVER_H
И вот реализация mysolver.cpp :

Код: Выделить всё

#include "mySolver.h"
#include 

using Eigen::MatrixXd;
using Eigen::VectorXd;

VectorXd mySolver::solve(const MatrixXd& A, const VectorXd& b)
{
result = VectorXd::Constant(2,1);
return result;
}
Ошибка сегментации возникает при вызове Solve () из Class TestClass . Вот заголовочный файл testclass.h :

Код: Выделить всё

#ifndef TESTCLASS_H
#define TESTCLASS_H

#include "mySolver.h"
#include 

using Eigen::MatrixXd;
using Eigen::VectorXd;

class testClass {

private:

mySolver MySolver;

public:

void run();
};

#endif // TESTCLASS_H
И вот реализация testclass.cpp :

Код: Выделить всё

#include "testClass.h"
#include "mySolver.h"

#include 

using Eigen::MatrixXd;
using Eigen::VectorXd;

void testClass::run()
{
MySolver = mySolver();

A = MatrixXd::Constant(2,2,1);
b = VectorXd::Constant(2,1);

p = MySolver.solve(A, b);
}
Пожалуйста, помогите мне с этим, это кажется простым, но я не могу понять, почему это не работает.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ass-member
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»