我重载了以下功能:
void myClass::saveAsMat (bool complete){
...
}
void myClass::saveAsMat (std::string filename){
...
}
在我的main.cpp中,当我调用这样的函数时:
myObj.saveAsMat(true);
everthing工作正常。但是,当我改为调用这样的函数时:
myObj.saveAsMat("myName");
该功能根本没有被执行。我期望编译或运行时错误,但没有这样的。该程序被编译并仅运行该函数被忽略。 (我通过在函数中放置一些std::cout
来检查这一点。
然后我发现我可以通过改变传递给的参数来解决这个问题:
myObj.saveAsMat(string("myName"));
为什么我必须为参数设置额外的string()
?其他未过载的函数只需将"myName"
传递给"std::string"
参数即可正常工作。