【发布时间】:2012-04-10 15:31:20
【问题描述】:
在 C++ 中,我创建了一个具有受保护(数据类型)成员和私有(函数)成员的类:
class Qt3DViewer : public QMainWindow
{
...
protected:
vtkImageData * imgC1;
...
private:
void ComputeSlices();
}
在类成员“ComputeSlices”的实现中,我使用条件if 来更新imgC1:
void Qt3DViewer::ComputeObliqueSlices()
{
...
if (someFlag==1)
this->imgC1 = reader1->GetOutput();
else
this->imgC1 = reader2->GetOutput();
...
// Code that requires this->imgC1 updated!
}
问题在于 imgC1 的更新仅在条件内有效,在 if 块更新超出范围并且 imgC1 成员未真正更新后!
如何使用条件块更新imgC1并确保在块之后实际更新成员?
【问题讨论】:
-
我绝不是 C++ 专家,所以我不确定是否将
imgC1声明为受保护和ComputeSlicesas 私有有什么事情要做。 -
你的问题毫无意义。当然
imgC1正在更新,您在条件的两个分支中都为其分配了一个值。在条件之后,您可以使用imgC1做任何您想做的事情。我不太明白这是什么问题。 -
在
if块内部完成的代码更改应该反映在外部......你能举一个你所观察到的指针值的例子吗? -
你为什么不也显示
Getoutput函数? -
在这种情况下,调试器是你的朋友!在
if所在的行上设置一个断点,然后单步执行看看会发生什么。如果结果出乎意料,则进入 getter 函数,看看那里发生了什么。