2012-04-19 70 views
-3

我正在爲學校作業實施離散傅立葉變換,並創建了構造變換矩陣的DFT類。出於某種原因,當我在main()中實例化DFT對象時,一切正常,但如果使用未命名的名稱空間,矩陣構造不當。爲什麼構造函數在未命名的命名空間中失敗?

作品:

int main() 
{ 
    DFT matrix(size); 
    ... 
    matrix.Transform(data); 
    ... 
} 

不起作用:

namespace 
{ 
    DFT matrix(size); 
} 

int main() 
{ 
    ... 
    matrix.Transform(data); 
    ... 
} 

編譯器的bug,還是我記錯怎麼具名命名空間的作品?

+6

「不起作用」是什麼意思?什麼是「尺寸」?請提供一個完整的自包含示例來演示問題(並且儘可能小),並列出編譯器發出的確切錯誤。 – 2012-04-19 20:19:06

+1

有關如何遵循James建議的詳細信息,請參閱[簡短,自包含,可編譯的示例](http://sscce.org/)。 – 2012-04-19 20:23:44

+0

道歉。第一次海報,我今天早上很匆忙。我會盡快用一個更好的例子來更新這個問題。 – DarkMorford 2012-04-19 23:27:11

回答

0

只是胡亂猜測:

namespace 
{ 
    DFT matrix(size); 
} 

哪裏不從中獲取size?請記住,這將構建之前運行main

0

這裏的問題是,你不能真正從這樣的一位不願透露姓名的命名空間調用構造函數,因此...

namespace { 
    DFT matrix(size); 
} 

實際上是宣告一個函數。另一方面,

namespace { 
    DFT matrix; 
} 

將工作,但將使用零初始值設定項。