我得到重载函数的错误调用是不明确的,我理解这是因为编译器无法区分它们,但有没有办法在保持相同参数的同时解决这个问题?我必须使用我在下面提供的声明,如果我每次都遇到这个错误,我会如何使用它们让我感到困惑。
我缩短了我的代码,以显示构成问题的构造函数。
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_;
}
}
答案 0 :(得分:4)
只需删除不带参数的构造函数即可。第二个构造函数已经完成了第一个构造函数的所有操作。
如果它收到一个nullptr,它会测试它并设置局部变量,如果没有继续它的逻辑。第一个构造函数完全是多余的。