Ich bekomme den Fehler Aufruf der überladenen Funktion ist mehrdeutig und ich verstehe es, weil der Compiler nicht zwischen ihnen unterscheiden kann, aber gibt es eine Möglichkeit, um dies zu umgehen, während die gleichen Parameter beibehalten? Ich muss die Erklärungen verwenden, die ich unten gegeben habe, und es verwirrt mich, wie ich sie beide verwenden kann, wenn ich diesen Fehler jedes Mal traf.Aufruf von überladenen Funktionen ist mehrdeutig
Ich habe meinen Code gekürzt, um die Konstruktoren anzuzeigen, die das Problem darstellen.
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
Namespace 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_;
}
}
Das ist, weil die Funktion mit dem Standardparameter und der mit out keinen Parameteraufruf haben kann und würde nicht wissen, –
zu benennen Ja verstehe ich das, aber gibt es einen Workaround für diesen, ohne irgendeinen Kompromiss, oder ist ist es nicht möglich? – Glaz
loswerden der no-Parameter –