【发布时间】:2010-10-31 20:43:54
【问题描述】:
我遇到了访问冲突异常的问题。 我正在使用 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;
现在,如果您从例如我的 main 方法调用类中的函数并尝试访问返回值,例如 t3dim->GetLargestPossibleRegion().GetSize();。我收到访问冲突错误。重要的是要注意,如果我不外包代码并将其放在 main 方法中,它就像一个魅力。可能是什么问题呢?我该如何解决?
[编辑] 我尝试用 const char* 文件名替换字符串文件名。 main 方法如下所示。
MyClass imIO;
const char* filename = "path to file";
ThreeDImageFloatType *t3dim = imIO.loadImage(filename);
t3dim->GetLargestPossibleRegion().GetSize();
再次,如果我将函数中的代码完全放入它可以工作的 main 方法中。
[/编辑]
[题外话] 也许版主可以将其标记为 itk,因为这是一个特定于 itk 的问题? [/offtopic]
【问题讨论】:
-
ITK - itk.org - ITK 是一个开源的跨平台系统,可为开发人员提供一套广泛的图像分析软件工具。
-
我知道,我正在使用它。 ???.
-
你当然知道ITK是什么,但其他人不会知道它是什么。我不知道。我将链接放在那里,以便其他人可以更轻松地找出它是什么,并在他们喜欢的情况下阅读它的文档。
-
没想到,你的权利。