2013-02-20 65 views
1

即使使用默認構造函數,仍然有錯誤。錯誤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://stackoverflow.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

回答

6

將默認參數放在構造函數的聲明中。實際上,當您嘗試創建數組時,編譯器不知道它們。

+0

你會如何做到這一點與陣列?我以爲你不能。 – 2013-02-20 23:36:44

+1

@JimHurley你不需要對數組做任何事情 - 改變構造函數的聲明。 – 2013-02-20 23:43:29

+0

我很抱歉,但你能舉一個例子來說明如何做到這一點嗎?我以爲那是我在做的地方。 – 2013-02-21 00:03:00