So I think I might be overthinking this but I wanted to know if someone could clarify why the following statement works in the given code
f->hello(); This is the code
struct bar { void hello() { std::cout << "Hello World"; } }; struct foo { bar* f; foo() { f = new bar(); } ~foo() { delete f; } bar* operator->() { return f; } }; int main() { foo f; f->hello(); //Works } Since the following code from above returns a pointer
bar* operator->() { return f; } should'nt
f->hello(); actually be f->->hello(); why does f->hello() work and f->->hello() fails ? The reason i am thinking that f->->hello() should work is because
f->ptrReturned->hello(); If we overload the -> operator are we required to return a ptr type ? Form what I have tried it seems returning an object type is not allowed
->operator to the returned pointer so you don't have the awkward syntax problems.