Article View: comp.std.c++
Article #1833Semantics operator->()
From: Douglas C. Schmidt
Date: Thu, 24 Aug 1995 03:56
Date: Thu, 24 Aug 1995 03:56
59 lines
1984 bytes
1984 bytes
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?
Thanks,
Doug
--
Dr. Douglas C. Schmidt (schmidt@cs.wustl.edu)
Department of Computer Science, Washington University
St. Louis, MO 63130. Work #: (314) 935-7538; FAX #: (314) 935-7302
http://www.cs.wustl.edu/~schmidt/
[ 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. ]
Technical Details
Message-ID:
<41gq8b$1jm@tango.cs.wustl.edu>Path:
arc1-ca.pugleaf.net!engnews2.Eng.Sun.COM!taumet!clamageShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!engnews2.Eng.Sun.COM!taumet!clamage From: schmidt@cs.wustl.edu (Douglas C. Schmidt) Newsgroups: comp.std.c++ Subject: Semantics operator->() Date: 24 Aug 1995 03:56:23 GMT Organization: Computer Science Department, Washington University. Approved: clamage@eng.sun.com (comp.std.c++) Message-ID: <41gq8b$1jm@tango.cs.wustl.edu> NNTP-Posting-Host: taumet.eng.sun.com Content-Type: text Content-Length: 1255 Originator: clamage@taumet