2013-10-18 48 views
0

我已經將一些以前的工作類移入新的名稱空間,現在我在訪問一個類'ui時遇到問題。如何使用命名空間處理QWidgets 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' 
    { 

    } 
} 

我試了幾次描述類型的星座,但它似乎沒有任何工作。有沒有辦法使這項工作?

+0

您是否在anomalyDetection實現文件中包含安裝頭文件? – TheDarkKnight

+0

@ Merlin069:我做到了,是的。這是一個命名空間的問題,我擔心。 – LarissaGodzilla

+0

我不懷疑,只是想覆蓋顯而易見的第一個。 – TheDarkKnight

回答

2

我想原因是你宣佈在兩個不同的命名空間命名Setup兩個不同的類:UianomalyDetection,以及一流的Ui::Setup沒有默認構造函數,編譯器檢測到。您需要定義Ui::Setup類,如下所示:

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

不過,我不認爲我明白爲了什麼目的,你以這種方式設計的類。

+0

好吧...它似乎工作,但現在我不得不解決類作爲Ui :: anomalyDetection ::安裝程序。有沒有解決的辦法?至於爲什麼這個班是這樣設計的,這是一個很好的問題。我在這裏使用了一個比較老的代碼庫,所以我不得不在稍後檢查一下是否有更好的方法。現在,我只需要讓它工作,最好不需要用Ui :: anomalyDetection :: Setup來解決它。 – LarissaGodzilla

+0

@bumbumfish,與目前的設計,沒有'Ui :: anomalyDetection :: Setup'類。如果你想擁有這樣的類,你需要將它定義到嵌套的命名空間中。 – vahancho

+0

您可以鍵入一個較短的版本,而不是一直鍵入Ui :: anomolyDetection :: Setup。 – TheDarkKnight