Thread View: comp.std.c++
1 messages
1 total messages
Started by Ajay Lunawat
Thu, 24 Aug 1995 16:31
Re: Semantics operator->()
Author: Ajay Lunawat
Date: Thu, 24 Aug 1995 16:31
Date: Thu, 24 Aug 1995 16:31
67 lines
2480 bytes
2480 bytes
In article <41gq8b$1jm@tango.cs.wustl.edu>, schmidt@cs.wustl.edu (Douglas C. Schmidt) writes:
|> Hi,
|>
|> I've got a question about the behavior of operator->(), in
|> particular, can it return a pointer to a builtin type?
|>
|> For example, consider the following:
|>
|> ----------------------------------------
|> #include <stdio.h>
|>
|> class Foo
|> {
|> public:
|> Foo (int i): i_ (i) {}
|>
|> int *operator->()
|> {
|> return &this->i_;
|> }
|>
|> private:
|> int i_;
|> };
|>
|> int main ()
|> {
|> Foo foo (10);
|> printf ("%d, ", ++*(int *) foo.operator->());
|> printf ("%d\n", ++*(int *) foo.operator->());
|> // prints "11, 12"
|> return 0;
|> }
|> ----------------------------------------
|>
|> When I compile this with gcc it compiles and runs fine.
|> However, when I use SunC++ 4.0.1 I get the following error:
|>
|> ----------------------------------------
|> % CC foo.C
|> "foo.C", line 9: Error: Cannot have a return type of int* for Foo::operator->().
|> 1 Error(s) detected.
|> ----------------------------------------
|>
|> I tried to find a discussion of this in the ARM, but couldn't
|> find it discussed there. Can someone please tell me if this is legal
|> in the draft ANSI/ISO C++ standard?
Sun compiler seem to be doing right thing here.
Consider this
Foo *x = new Foo(10);
x->f(); // f() is one of the public interface/function for Foo class.
Now if *x.operator->() returned a pointer to int, the statements will be
equivelent of:
int *i = new i(10);
i->f();
Which of course should not work. That is operator->() should return
pointer to a User defiend type(struct/class).
Ajay
[ comp.std.c++ is moderated. Submission address: std-c++@ncar.ucar.edu.
Contact address: std-c++-request@ncar.ucar.edu. The moderation policy
is summarized in http://dogbert.lbl.gov/~matt/std-c++/policy.html. ]
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads