我收到错误调用重载函数不明确,我明白这是因为编译器无法区分它们,但是有没有办法在保持相同参数的同时解决这个问题?我必须使用下面提供的声明,如果每次都遇到此错误,我会很困惑如何使用它们。
我已经缩短了代码以显示提出问题的构造函数。
错误消息.h
class ErrorMessage {
char* message_; //pointer that holds the address of the message stored in current object
public:
ErrorMessage();
explicit ErrorMessage(const char* errorMessage = nullptr); //receive address of a C-style nullterminate string holding an error message
}
Run Code Online (Sandbox Code Playgroud)
错误消息.cpp
命名空间 sict {
ErrorMessage::ErrorMessage() {
message_ = nullptr;
}
ErrorMessage::ErrorMessage(const char* errorMessage) {
if(errorMessage == nullptr) {
message_ = nullptr;
}
else {
message(errorMessage);
}
const char* ErrorMessage::message() const {
return message_;
}
}
Run Code Online (Sandbox Code Playgroud)
只需删除不带参数的构造函数即可。第二个构造函数已经完成了第一个构造函数所做的所有事情。
如果它收到 nullptr,它会测试它并设置局部变量,如果没有,它会继续其逻辑。第一个构造函数是完全多余的。
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |