簡體   English   中英

重載函數的調用不明確

[英]Call of Overloaded Functions is Ambiguous

我得到重載函數的錯誤調用是模棱兩可的,並且我理解這是因為編譯器無法區分它們,但是有沒有辦法在保持相同參數的情況下解決此問題? 我必須使用下面提供的聲明,如果每次遇到此錯誤,我都將無法使用它們,這使我感到困惑。

我已經縮短了代碼,以顯示構成問題的構造函數。

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

只需刪除不帶參數的構造函數。 第二個構造函數已經完成了第一個構造函數的所有工作。

如果收到nullptr,它將對其進行測試並設置局部變量;否則,它將繼續其邏輯。 第一個構造函數是完全多余的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM