2010-04-15 69 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) // .... 

注意,但