2010-04-15 83 views
1

我有這個類的頭構造錯誤

//header for class. 
#ifndef Container_H 
#define Container_H 

#include <iostream> 
using namespace std; 


const int DEFAULT=32; 

class Container{ 
    public: 
     Container(int maxCapacity = DEFAULT); 
     ~Container(); 
     void insert(int item, int index); 
     void erase(int index); 
     int size()const; 
    private: 
     int sizeC;     
     int capacityC;   
     int * elements;    
}; 
void info(); 
#endif 

這個源文件

#include "container.h" 


Container::Container(int maxCapacity = DEFAULT){ 
    int y; 
} 
void Container::insert(int item, int index){ 
    int x; 
} 

,當我編譯,我得到以下錯誤消息

test.cpp:4: error: default argument given for parameter 1 of `Container::Container(int)' 
container.h:12: error: after previous specification in `Container::Container(int) 

我有什麼這裏做錯了嗎?

不帶參數

回答

2

功能仍然需要括號:

Container::Container() { 
    int y; 
} 

根據你的頭,它看起來像你剛纔忘了MAXCAPACITY參數,它實際上應該是:

Container::Container(int maxCapacity) { 
    int y; 
} 

(如果你也在問這個警告,這很不言而喻 - 你宣佈一個int x,但沒有做任何事情)

編輯:好了,現在你已經編輯了我完全改變錯誤。現在這是一個錯誤,因爲你在這兩個地方都指定了默認參數;你只能在聲明中指定它。在實際實施中將其留下,就像我上面的第二個示例

+0

是我知道,只是想知道爲什麼constructer得到一個錯誤。我看到我的錯誤,並修復它,但即時通訊仍然得到一個錯誤 – silent 2010-04-15 05:32:09

+0

非常感謝你:)。漫長的一天.. – silent 2010-04-15 05:34:37

0

Container::Container{ int y; }在語法上不正確。

編輯:

試試這個:

Container::Container(int maxCapacity) // default argument not to be mentioned in the definition 
{ 
    int y; 
} 
+0

對不起,我修好了,它仍然給我一個錯誤。 「test.cpp:4:error:爲Container Container的參數1給出的默認參數 container.h:12:error:之前在Container :: Container(int) – silent 2010-04-15 05:31:15

0

你的容器構造函數(在源文件中)應該是這樣的:

Container::Container(int maxCapacity){ 
    // code 
} 
0
Container::Container{ 
    int y; 
} 

我不是確定這是什麼意圖。如果你想定義構造函數,它應該是這個樣子:在定義要包含在聲明中的默認值

Container::Container(int maxCapacity) // .... 

注意,但