C++问题(no matching function for call to)

头文件里是:enumLOGMODE{M_DEFAULT,M_DAY,M_SIZE};classStatuslogfile{public:Statuslogfile(cha... 头文件里是:
enum LOGMODE { M_DEFAULT, M_DAY, M_SIZE };

class Statuslogfile
{
public:

Statuslogfile( char *f, LOGMODE lm, int ms);

~Statuslogfile();

CPP文件里是:
Statuslogfile::Statuslogfile( char * f, LOGMODE lm=M_DEFAULT, int ms=0 )
{
fd = -1;
strcpy( fileName, f );
logMode=lm;
msize=ms;
getToday(CREATEDAY);
}

Statuslogfile::~Statuslogfile()
{
closefile();
}

报错:
StatusLogFile.h:24: note: candidates are: Statuslogfile::Statuslogfile(char*, LOGMODE, int)
StatusLogFile.h:22: note: Statuslogfile::Statuslogfile()
StatusLogFile.h:19: note: Statuslogfile::Statuslogfile(const Statuslogfile&)

大侠帮忙解决一下啊!
还有,test.cpp前几行是:
#include "StatusLogFile.h"
int main()
{
Statuslogfile *log = new Statuslogfile("log.dat");

报错:
test.cpp:4: error: no matching function for call to ‘Statuslogfile::Statuslogfile(const char [8])’
展开
 我来答
百度网友ab5571cf0
2010-04-22
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
test.cpp:4: error: no matching function for call to ‘Statuslogfile::Statuslogfile(const char [8])’
这个错误是由于构造函数接受的输入是字符串(char*),而不是常量字符串(const char*),你用“log.dat"作为参数的话就会出现找不到匹配的构造函数的错误了。如果先赋值一个字符串char* str="log.dat"再用str作为构造函数的参数就可以了。
FelixWCK
2010-04-22 · 超过37用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:0
展开全部
大概是要你用OVERLOAD吧...
简单一点...把另外两个para也打进去就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑熬将胡
2010-04-23 · TA获得超过301个赞
知道小有建树答主
回答量:249
采纳率:0%
帮助的人:107万
展开全部
Statuslogfile("log.dat")调用的是哪个构造函数?
Statuslogfile(char*, LOGMODE, int),
Statuslogfile(),
Statuslogfile(const Statuslogfile&)
跟哪个匹配呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式