调用重载函数是不明确的

时间:2017-12-04 22:41:45

标签: c++ overloading

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

我缩短了我的代码,以显示构成问题的构造函数。

ErrorMessage.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
}

ErrorMessage.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_;
    }
}

1 个答案:

答案 0 :(得分:4)

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

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