Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

BEFORE I EXPLODE

0 views
Skip to first unread message

JKop

unread,
Sep 18, 2004, 4:10:08 PM9/18/04
to
G++ gives the most un-informative, cryptic, BULLSHIT errors
statements.

I'm writing a program at the moment and I have to finish it
real soon. The problem I'm having is illustrated in the
following:

class Blah
{
private:

int k;

public:

operator int()
{
return k;
}

};


int main()
{
Blah const poo;

switch (poo)
{
case 1:
;
}

}


The yokie that goes in a switch statement has to be an
integral type. My class has an "operator int()". Grand.

Note that the "poo" object is const. If I make the poo
object non-const, then the above code compiles. BUT WHAT
THE HELL DIFFERENCE DOES IT MAKE IF IT'S CONST!

Some enlightenment please,

-JKop

Message has been deleted
Message has been deleted

JKop

unread,
Sep 18, 2004, 4:26:13 PM9/18/04
to
Ioannis Vranos posted:

> operator const int()


That was my first thought.

The bleeding thing still doesn't work!

The words "compiler bug" are coming to mind...

Anyway,

the operator int() returns by *value*, so it would make no
difference whatsoever if the object was const or not.

The only reason I can see of being able to define both:

operator int()

and

operator const int()

is to have separate routines that work differently on const
objects Vs normal objects.

I could have the program written five times already if I
didn't have to deal with this bullshit.

Right now, I'm getting around it via:

Blah temp(poo);

switch (temp)


That's until I figure out what the hell's going on!


-JKop

-JKop

Ioannis Vranos

unread,
Sep 18, 2004, 4:26:37 PM9/18/04
to
JKop wrote:
> G++ gives the most un-informative, cryptic, BULLSHIT errors
> statements.
>
> I'm writing a program at the moment and I have to finish it
> real soon. The problem I'm having is illustrated in the
> following:
>
> class Blah
> {
> private:
>
> int k;
>
> public:
>
> operator int()


// Means it doesn't modify k
operator int() const


// Also a default constructor is needed


> {
> return k;
> }
>
> };
>
>
> int main()
> {
> Blah const poo;
>
> switch (poo)
> {
> case 1:
> ;
> }
>
> }
>
>
> The yokie that goes in a switch statement has to be an
> integral type. My class has an "operator int()". Grand.
>
> Note that the "poo" object is const. If I make the poo
> object non-const, then the above code compiles. BUT WHAT
> THE HELL DIFFERENCE DOES IT MAKE IF IT'S CONST!
>
> Some enlightenment please,
>
> -JKop

--
Ioannis Vranos

http://www23.brinkster.com/noicys

Alf P. Steinbach

unread,
Sep 18, 2004, 4:27:08 PM9/18/04
to
* JKop:
>
> [swear words]

The problem is trivial and the posting excessive: stop trolling.

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

JKop

unread,
Sep 18, 2004, 4:28:28 PM9/18/04
to
Ioannis Vranos posted:

> operator int() const


This is me shaking your virtual hand:

*shakes virtual hand*

Hallileujah (or however you spell it!)


Thanks a lot Ioannis.


-JKop

JKop

unread,
Sep 18, 2004, 4:29:27 PM9/18/04
to
Alf P. Steinbach posted:

> * JKop:
>>
>> [swear words]
>
> The problem is trivial and the posting excessive: stop
trolling.
>

Subjective, asshole.


-JKop

Greg Comeau

unread,
Sep 18, 2004, 9:13:47 PM9/18/04
to
In article <AC03d.29627$Z14....@news.indigo.ie>,

Here's the results from Comeau C++ (hint hint) which hopefully helps:

G:\tmp>como --A --vc71 cct.cpp
Comeau C/C++ 4.3.4.1 (May 29 2004 23:08:11) for MS_WINDOWS_x86
Copyright 1988-2004 Comeau Computing. All rights reserved.
MODE:strict errors C++

"cct.cpp", line 20: error: const variable "poo" requires an initializer --
class "Blah" has no explicitly declared default constructor
Blah const poo;
^

"cct.cpp", line 22: error: expression must have integral or enum type
switch (poo)
^

"cct.cpp", line 22: warning: variable "poo" is used before its value is set
switch (poo)
^

2 errors detected in the compilation of "cct.cpp".
--
Greg Comeau / Comeau C++ 4.3.3, for C++03 core language support
Comeau C/C++ ONLINE ==> http://www.comeaucomputing.com/tryitout
World Class Compilers: Breathtaking C++, Amazing C99, Fabulous C90.
Comeau C/C++ with Dinkumware's Libraries... Have you tried it?

Old Wolf

unread,
Sep 19, 2004, 5:02:58 PM9/19/04
to
com...@panix.com (Greg Comeau) wrote:
> JKop <NU...@NULL.NULL> wrote:
>
> >G++ gives the most un-informative, cryptic, BULLSHIT errors
> >statements.
> >
> >class Blah
> >{
> > int k;

> > operator int() { return k; }
> >};
> >
> >int main()
> >{
> > Blah const poo;
> >
> > switch (poo)
> >
> >Note that the "poo" object is const. If I make the poo
> >object non-const, then the above code compiles. BUT WHAT
> >THE HELL DIFFERENCE DOES IT MAKE IF IT'S CONST!
>
> Here's the results from Comeau C++ (hint hint) which hopefully helps:

This guy refuses to pay for software on principle, so you'll
be lucky..

> "cct.cpp", line 22: error: expression must have integral or enum type
> switch (poo)
> ^

Interestingly, g++'s error message is:
error: passing `const Blah' as `this' argument of
`Blah::operator int()' discards qualifiers

ie. it seems that g++ selected 'operator int' and then noted that
you can't call a non-const function for a const object (which
was the OP's problem). Your compiler seems to have not selected
this function at all for that reason (so IMHO in this
particular case, g++'s error message was more informative).
Comments?

Greg Comeau

unread,
Sep 19, 2004, 5:27:21 PM9/19/04
to
In article <843a4f78.04091...@posting.google.com>,

I'd be confused because it's telling me something about
a function it should not have picked.

JKop

unread,
Sep 20, 2004, 3:50:36 AM9/20/04
to

>> "cct.cpp", line 22: error: expression must have integral
or enum type
>> switch (poo) ^
> Interestingly, g++'s error message is:
> error: passing `const Blah' as `this' argument of
> `Blah::operator int()' discards qualifiers


What G++ version is that?! Look at my original post, I got
a totally different, non-informative error.

-JKop

Nicolas Pavlidis

unread,
Sep 20, 2004, 4:38:02 AM9/20/04
to
JKop <NU...@NULL.NULL> writes:

A little question: Do you use 3.4?

Kind regards,
Nicolas

--
| Nicolas Pavlidis | Elvis Presly: |\ |__ |
| Student of SE & KM | "Into the goto" | \|__| |
| pav...@sbox.tugraz.at | ICQ #320057056 | |
|-------------------University of Technology, Graz----------------|

JKop

unread,
Sep 20, 2004, 5:27:52 AM9/20/04
to
Nicolas Pavlidis posted:

>> What G++ version is that?! Look at my original post, I got a totally
>> different, non-informative error.
>
> A little question: Do you use 3.4?
>
> Kind regards,
> Nicolas

Okay could you do me a favour please?

Hold my hand and slowly guide me through the process of downloading the
latest version of G++.

I remember the last time I downloaded G++, it was one of the most traumatic
experiences of my life... to this day I still wake up in a cold sweat
thinking of those abbreviations. Cryptic is not the word.


Thanks,

-JKop

Ioannis Vranos

unread,
Sep 20, 2004, 7:06:54 AM9/20/04
to


What GCC are you using, what version and in what OS?


In Windows you may use the latest Beta of Dev-C++ at
http://www.bloodshed.net.

JKop

unread,
Sep 20, 2004, 7:24:07 AM9/20/04
to
Ioannis Vranos posted:


I hate bugs, I mean, I hate Dev C++. They've almost become
synonyms for me. When I hear "bugs", I think "Dev C++".
When I think "Dev C++", I think "bugs".

Anyway, I've got the latest version of MS Visual Studio on
its way to me... :-D

A BETA version of Dev C++, is that for the 3rd World?


-JKop

Ioannis Vranos

unread,
Sep 20, 2004, 7:32:21 AM9/20/04
to
JKop wrote:

> A BETA version of Dev C++, is that for the 3rd World?


You may download the latest version of GCC for Windows:


http://prdownloads.sf.net/mingw/MinGW-3.1.0-1.exe?download

and use it from command line or use Context:

http://www.context.cx/

JKop

unread,
Sep 20, 2004, 7:52:14 AM9/20/04
to
Ioannis Vranos posted:

> JKop wrote:
>
>> A BETA version of Dev C++, is that for the 3rd World?
>
>
> You may download the latest version of GCC for Windows:
>
>
> http://prdownloads.sf.net/mingw/MinGW-3.1.0-1.exe?
download
>

Beautiful!




> and use it from command line or use Context:
>
> http://www.context.cx/


Have been for a while!


-JKop

Old Wolf

unread,
Sep 20, 2004, 4:43:03 PM9/20/04
to

You never posted any error messages. This is g++ (note: lower-case
g) 3.4.1. I got it from http://gcc.gnu.org/ . If you want a
Windows binary then you should install Cygwin (www.cygwin.com)
or Mingw.

0 new messages