#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"のインスタンスを使用できるようにしたいと考えています。