2012-04-19 76 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; 
} 

将工作,但将使用零初始值设定项。