0

我已经将一些以前工作的类移到了一个新的命名空间中,现在我在访问一个类时遇到了问题' ui

之前是这样的:

//header file

namespace Ui
{
  class Setup;
}

class Setup : public QWidget
{
  // stuff
};


现在我这样做:

//header file

namespace Ui
{
  class Setup;
}

namespace anomalyDetection
{
  class Setup : public QWidget
  {
    // stuff
  };
}


困扰我的是构造函数:

//source file

namespace anomalyDetection
{
  Setup::Setup()
  : ui(new Ui::Setup())  //here i get a C2512 'no default constructor available'
  {

  }
}

我已经尝试了几种描述类型的星座,但它似乎并没有以任何方式工作。有没有办法使这项工作?

4

1 回答 1

2

我认为原因是您Setup在两个不同的命名空间中声明了两个不同的类:Uiand anomalyDetection,并且第一个类Ui::Setup没有默认构造函数,编译器会检测到这一点。您需要Ui::Setup按如下方式定义类:

namespace Ui
{
    class Setup
    {
    public:
        Setup()
        {}
    };
}

不过,我认为我不明白您以这种方式设计课程的目的是什么。

于 2013-10-18T12:14:01.013 回答