错误C2512:“平铺”:没有适当的默认构造函数可用

问题描述:

即使使用默认构造函数,仍然有错误。错误C2512:“平铺”:没有适当的默认构造函数可用

class Foo { 
    public: 
    Foo (int x, int y, int type); 
} 

而在.cpp文件

Foo::Foo (int x = 0, int y = 0, int type = 0) { 

然而,当我把它称为

Foo foo_array[5][5]; 

我得到的错误。任何可能的原因?

+2

请参阅:http://*.com/questions/13713916/am-i-using-default-arguments-incorrectly/13713944#13713944 – billz 2013-02-20 23:31:03

+1

如果您使用'std :: vector'而不是原始数组,那么您可以指定一个默认值,这样就不需要有其他不必要的(也许不是非常有意义的)默认构造函数。 – 2013-02-20 23:33:36

将默认参数放在构造函数的声明中。实际上,当您尝试创建数组时,编译器不知道它们。

+0

你会如何做到这一点与阵列?我以为你不能。 – 2013-02-20 23:36:44

+1

@JimHurley你不需要对数组做任何事情 - 改变构造函数的声明。 – 2013-02-20 23:43:29

+0

我很抱歉,但你能举一个例子来说明如何做到这一点吗?我以为那是我在做的地方。 – 2013-02-21 00:03:00