#include <string>
using String = std::string;
class Base {
protected:
String value;
};
class Readonly : virtual Base {
public:
const String& method() const {
return value;
}
String& method() {
return value;
}
};
class Writeonly : virtual Base {
public:
Writeonly& method(const String& value) {
this->value = value;
return *this;
}
Writeonly& method(String&& value) {
this->value = std::move(value);
return *this;
}
};
class Unrestricted : public Readonly, public Writeonly {};
void usage() {
String string;
Unrestricted unrestricted;
unrestricted.method(string); // ambiguous
string = unrestricted.method(); // ambiguous
}
Может кто-нибудь объяснить мне, почему эти вызовы методов неоднозначны?Почему эти методы называют неоднозначными?
Они не являются двусмысленными, если их объединяют в «Writeonly» или «Readonly».
Я хотел бы использовать это для свойств доступа к шаблону. Поэтому я хочу иметь возможность использовать экземпляры «Writeonly», «Readonly» и «Unrestricted».