为什么构造函数会在未命名的命名空间中失败?

时间:2012-04-19 20:16:50

标签: c++

我正在为学校作业实施离散傅里叶变换,我创建了一个构造转换矩阵的DFT类。出于某种原因,当我在DFT中实例化main()对象时,一切正常,但如果使用未命名的命名空间,则矩阵构造不正确。

使用:

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

不起作用:

namespace
{
    DFT matrix(size);
}

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

编译器错误,还是我错误地记述了未命名的命名空间是如何工作的?

2 个答案:

答案 0 :(得分:0)

只是猜测:

namespace
{
    DFT matrix(size);
}

从哪里获得size?请记住,这将在运行main之前构建

答案 1 :(得分:0)

这里的问题是你实际上无法从未命名的命名空间中调用构造函数,所以...

namespace {
    DFT matrix(size);
}

实际上是在声明一个功能。另一方面,

namespace {
    DFT matrix;
}

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