У меня проблема с Исключением нарушения доступа. Я использую itk и читаю файл с его файловым считывателем.itk filereader вызывает исключение нарушения доступа
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();
. Я получаю ошибку нарушения доступа. Важно заметить, что если я не передаю код на аутсорсинг и не использую его в основном методе, он работает как шарм. В чем может быть проблема? Как это исправить?
[edit] Я попытался заменить строковое имя файла на const char * filename. Основной метод выглядит следующим образом.
MyClass imIO;
const char* filename = "path to file";
ThreeDImageFloatType *t3dim = imIO.loadImage(filename);
t3dim->GetLargestPossibleRegion().GetSize();
Опять же, если я полностью поместил код из функции в основном методе, он работает.
[/ править]
[оффтоп] возможно модератор может пометить его как ИТК, так как это ИТК конкретный вопрос? [/ offtopic]
ITK - http://itk.org - ITK - это кросс-платформенная система с открытым исходным кодом, которая предоставляет разработчикам обширный набор программных средств для анализа изображений. –
Я знаю это, я использую его. ???. –
Конечно, вы знаете, что такое ITK, но другие люди не будут знать, что это такое.Я не знал. Я разместил ссылку там, чтобы другие люди могли легче узнать, что это такое, и прочитать их документацию, если они понравились. –