Я понимаю, что все, что возвращаемый operator->
будет вызывать его operator->
в вызове функции, как это:Как определить, возвращает ли оператор «->» тип?
someVarWithOverloadedOperator->someFunc();
И этот процесс вызова ->
функции будет продолжаться до тех пор один из них не является указателем, а затем someFunc
вызывается из этого указателя.
Мой вопрос: есть ли способ заставить аргумент шаблона, чтобы иметь оператор ->
в конечном итоге вернуть определенный класс:
template<typename ThisClassOperatorMustReturn_TypeA_>
class MyClass{
void foo() {
ThisClassOperatorMustReturn_TypeA_ var;
var->someClassAFunc(); //I need this `->` operator to return type "A"
}
};
Любой способ сделать это?
Must определенный класс будет использоваться "как есть", или вы можете добавить определенный метод , или член класса, с целью реализации этого ограничения шаблона? –
Вы хотите, чтобы он возвращал 'A' в цепочном вызове, в первом вызове или в конце цепочки (так что' A * ')? – Jarod42
Вы пробовали статическое утверждение 'std :: is_same' между' A * 'и' declltype (var.operator ->()) '(после отбрасывания' const', если это необходимо)? –