对我来说非常简单的任务,我不知道为什么这会给我带来问题,我只是让两个模型类尝试在他们的方法中没有任何逻辑的情况下编译,使用已经给我的头文件和声明.老实说,这只是一个剪切和粘贴工作,但我仍然遇到了这个金色的金块 -
cbutton.cpp:11:44: error: default argument given for parameter 4 of ‘cio::CButton::CButton(const char*, int, int, bool, const char*)’ [-fpermissive]
cbutton.h:7:5: error: after previous specification in ‘cio::CButton::CButton(const char*, int, int, bool, const char*)’ [-fpermissive]
cbutton.cpp:11:44: error: default argument given for parameter 5 of ‘cio::CButton::CButton(const char*, int, int, bool, const char*)’ [-fpermissive]
cbutton.h:7:5: error: after previous specification in ‘cio::CButton::CButton(const char*, int, int, bool, const char*)’ [-fpermissive]
cbutton.cpp:19:41: error: default argument given for parameter 1 of ‘void cio::CButton::draw(int)’ [-fpermissive]
cbutton.h:11:10: error: after previous specification in ‘virtual void cio::CButton::draw(int)’ [-fpermissive]
cbutton.cpp:53:29: error: ‘virtual’ outside class declaration
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的文件.一如既往地谢谢大家!
#include "cfield.h"
namespace cio{
class CButton: public CField{
public:
CButton(const char *Str, int Row, int Col,
bool Bordered = true,
const char* Border=C_BORDER_CHARS);
virtual ~CButton();
void draw(int rn=C_FULL_FRAME);
int edit();
bool editable()const;
void set(const void* str);
};
}
#include "cbutton.h"
namespace cio {
CButton::CButton(const char *Str, int Row, int Col,
bool Bordered = true,
const char* Border=C_BORDER_CHARS){
}
void CButton::draw(int rn=C_FULL_FRAME){
}
int CButton::edit(){
return 0;
}
bool CButton::editable()const {
return false;
}
void CButton::set(const void* str){
}
virtual CButton::~CButton(){
}
}
Run Code Online (Sandbox Code Playgroud)
Syn*_*xis 13
您在函数的定义中指定了一个默认参数,而它们在类声明中已经有一个默认参数.您可以在类声明或函数定义中声明默认参数,但不能同时声明两者.
编辑:错过了你错误的结束:error: ‘virtual’ outside class declaration.这是一个相当清晰的编译器错误:virtual关键字属于类声明,而不是函数定义.只需将其从析构函数的定义中删除即可.
更正来源:
namespace cio {
CButton::CButton(const char *Str, int Row, int Col,
bool Bordered, // No default parameter here,
const char* Border){ // here,
}
void CButton::draw(int rn){ // and here
}
CButton::~CButton(){ // No virtual keyword here
}
}
Run Code Online (Sandbox Code Playgroud)