c++ - 仅对 char* 和字符串重载函数

标签 c++ overloading default-parameters

我正在制作一些函数来保存和加载我的值:

他们是这两个:

void safeFile(string &set_name) const;
void loadFile(string &set_name);

这里的问题是我还希望它们为 char* 工作,所以我像这样重载了它们:

void safeFile(string &set_name) const;
void loadFile(string &set_name);   
void safeFile(char* set_name) const;
void loadFile(char* set_name);

在cpp文件中:

void myclass::loadFile(string &set_name)
{
   ...
}
/* loadFile */


void myclass::safeFile(string &set_name)
{
   ...
}
/* safeFile*/


void myclass::loadFile(char *set_name)
{
    string mystring(set_name);
    loadFile(mystring);
}
/* loadFile */


void myclass::safeFile(char *set_name) const
{
    string mystring(set_name);
    safeFile(mystring);
}
/* safeFile*/

有没有更好的或其他方法我应该这样做?谢谢

最佳答案

只是不要为 char* 添加重载。 saveFileloadFile 应该简单地将它们的参数作为 const std::string&

如果你有:

void saveFile(std::string const& );

你可以同时调用它:

obj.saveFile("file.txt");
obj.saveFile(std::string("file.txt"));

关于c++ - 仅对 char* 和字符串重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060332/

相关文章:

c++ - Qt - 在特定时间创建通知(PC)

c++ - i2c smbus* 函数在 centos 7 i2c-dev.h 上不存在

c++ - 在 C++ 中将 float 数组的参数填充为 float*

具有默认值参数的 c# 重载(扩展)函数

visual-c++ - 为什么C++ CLI在托管类型上没有默认参数?

c++ - 在 Vector 内的对象中调用函数指针

kotlin - 在 kotlin 中重载函数时,我在一些非常基本的代码上不断得到 "Type mismatch"

java - java 中关于 int/long 和 String/object 参数的方法重载

c++ - Qt:信号调用函数的默认参数

Swift - 覆盖具有不同默认参数的函数