У меня проблема с исключением из-за нарушения прав доступа.Я использую itk и читаю файл с помощью программы чтения файлов.
ThreeDImageFloatType* MyClass::loadImage(std::string filename){
const char* cfilename = filename.c_str();
fileReader = ImageFileReaderType::New();
fileReader->SetFileName(cfilename);
try{
fileReader->Update();
}catch( ... ) {
std::cerr << "failed to read file " << filename << std::endl;
}
CastFilterType::Pointer castFilter = CastFilterType::New();
castFilter->SetInput(fileReader->GetOutput());
castFilter->Update();
//ThreeDImageFloatType *t3dim = castFilter->GetOutput();
t3dim = castFilter->GetOutput();
return t3dim;
}
Это функция, класс также содержит 2 глобальные переменные:
ImageFileReaderType::Pointer fileReader;
ThreeDImageFloatType *t3dim;
Теперь, если вы вызываете функцию в классе, например, из моего основного метода и пытаетесь получить доступвозвращаемое значение, что-то вроде t3dim->GetLargestPossibleRegion().GetSize();
.Я получаю ошибку нарушения доступа.Важно заметить, что если я не передаю код на стороне и использую его в методе main, он работает как шарм.В чем может быть проблема?Как мне это исправить?
[править] Я попытался заменить имя файла строки именем файла const char *.Метод main выглядит следующим образом.
MyClass imIO;
const char* filename = "path to file";
ThreeDImageFloatType *t3dim = imIO.loadImage(filename);
t3dim->GetLargestPossibleRegion().GetSize();
Опять же, если я полностью добавлю код из функции в метод main, он работает.
[/ edit]
[offtopic] может быть модератор может пометить его как itk, так как это специфический вопрос для itk?[/ Оффтоп]