-1
オーバーロードされた関数のエラー呼び出しが曖昧で、コンパイラがそれらを区別できないためですが、同じパラメータを維持しながらこれを回避する方法はありますか?私は以下に示す宣言を使用する必要があり、毎回このエラーが発生した場合に、その両方をどのように使用できるのか混乱しています。オーバーロードされた関数の呼び出しが曖昧である
問題を引き起こしているコンストラクタを表示するようにコードを短くしました。
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_;
}
}
これは、デフォルトのパラメータを持つ関数とoutを持つ関数の両方がパラメータ呼び出しを持たず、呼び出し先を知らないためです。 –
はい、私はそれを理解していますが、どちらにも妥協することなく回避する方法があります。それは不可能ですか? – Glaz
はnoパラメータを取り除きます –