重载函数的调用不明确

Gla*_*laz -1 c++ overloading

我收到错误调用重载函数不明确,我明白这是因为编译器无法区分它们,但是有没有办法在保持相同参数的同时解决这个问题?我必须使用下面提供的声明,如果每次都遇到此错误,我会很困惑如何使用它们。

我已经缩短了代码以显示提出问题的构造函数。

错误消息.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)

ben*_*low 5

只需删除不带参数的构造函数即可。第二个构造函数已经完成了第一个构造函数所做的所有事情。

如果它收到 nullptr,它会测试它并设置局部变量,如果没有,它会继续其逻辑。第一个构造函数是完全多余的。