-1

我在我拥有的一些 C++ 代码上运行 valgrind,它给出了一个错误,说我对未初始化的值有条件跳转。这是一段有问题的代码,它是一种方法(不是静态的)。

if (debug_ & 0x1) {
    printf("Debugging information...\n");
}

但是变量debug_是在构造函数中设置的,如下所示:

MyClass::MyClass(
    AnotherClass* interface,
    int debug) :
    debug_(debug)
{
    //Some other irrelevant stuff


}

并且标头定义了该参数的默认参数:

class MyClass : boost::noncopyable {
  public:
    explicit MyClass(AnotherClass* interface, int debug=0xFF);

  //Other stuff
  private:
    int debug_;
}

但是,即使我实例化这个类,我也会将一个值传递给第二个参数。我错过了什么?

4

1 回答 1

0

好吧,我觉得自己很愚蠢,但 SSCCE 的事情为我指明了正确的方向。我以为我看过所有东西,但没有。该类中有一个 setDebug() 方法可以更改调试值,并且它被构造函数调用了几个级别,并从另一个尚未初始化的结构中传递数据。

于 2013-10-11T15:24:19.463 回答