[Bug c++/26062] "Class object();" is not interpreted as a call to default constructor
sebor at roguewave dot com
gcc-bugzilla@gcc.gnu.org
Wed Feb 1 16:47:00 GMT 2006
------- Comment #2 from sebor at roguewave dot com 2006-02-01 16:47 -------
Subject: Re: New: "Class object();" is not interpreted as
a call to default constructor
sylvain dot joyeux at m4x dot org wrote:
> The following testcase
>
> #include <iostream>
>
> bool flag = true;
> class guardian
> {
> public:
> guardian() { flag = false; }
> ~guardian() { flag = true; }
> bool get() { return flag; }
> };
>
> int main()
> {
> guardian guard();
> std::cout << guard.get() << std::endl;
> std::cout << flag << std::endl;
> }
>
> Leads to the error
> error: request for member 'get' in 'guard', which is of non-class type
> 'guardian ()()'
FWIW, here's the HP aCC 3 error message for this program. Does it make
it clear where the problem is?
Error 583: "t.cpp", line 15 # Left side of '.' requires a class object;
type found was a function 'guardian ()'. Did you try to declare an
object with a nested constructor call? Such a declaration is interpreted
as a function declaration "guardian
guard()" ["t.cpp", line 14].
std::cout << guard.get() << std::endl;
^^^^^
Martin
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26062
More information about the Gcc-bugs
mailing list