🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #707

Re: Frage: illegal structur operation

#707
From: Karl-Heinz Krause
Date: Wed, 01 Nov 1995 09:22
57 lines
2374 bytes
Am 31. Okt. 1995 schrieb Hans Martin SPEISER
(speiser@steinway.u-strasbg.fr):

> Hallo Sie da,

> ich habe da ein Problem, dass ziemlich banal klingt aber ich bekomme es  
> einfach nicht auf die Reihe. Folgendes ist passiert:

> Um von den gegebenen Typen in BC 4.5 zu abstrahieren, habe ich eine Klasse  
> "boolean" entworfen. Sie hat das Attribut "value" das die Werte 0 und 1  
> aus der "enum (FALSE, TRUE)" annimmt. Alles schoen und gut.

> Mein Problem ist jetzt nur das ich bei einer Funktion, wie zum Beispiel  
> "ist_alles_ok", die boolean als Ergebnistyp hat keine "if" Anfrage  
> hinbekomme. Also zum Beispiel sowas:
> 	if (ist_alles_ok) ...
> Es kommt dann immer die Fehlermeldung "illegal structure operation".
> Definiere ich die Funktion "ist_alles_ok" mit dem Ergebnistyp "int", dann  
> verschwindet das Problem.

So ganz verstehe ich nicht, was Du da gemacht hast. Ein Beispiel wäre da
günstig gewesen. Darum muß ich einige Vermutungen anstellen, was schief
gelaufen ist. War es etwa so?

	class boolean { ... };
	boolean ist_alles_ok();

	if ( ist_alles_ok() ) { ... }

Das kann nicht funktionieren, denn "if" erwartet einen Ausdruck vom Typ
"int" oder einen Zeiger. Ein Konvertierungsoperator, den Konvertierungen
von "boolean" nach "int" ermöglicht, würde hier helfen:

	class boolean {
	   ...
	   operator int() { return value; }
	};

Ich verstehe sowieso nicht ganz, warum Du "boolean" als Klasse
definierst. Näherliegend wäre doch folgendes:

	enum boolean { false=0, true=1 };

	inline boolean operator| (boolean a, boolean b) 
	{ return boolean(int(a) | int(b)); }

	inline boolean operator& (boolean a, boolean b)
	{ return boolean(int(a) & int(b)); }

	inline boolean operator^ (boolean a, boolean b)
	{ return boolean (int(a) ^ int(b)); }

	inline boolean operator! (boolean a) { return boolean(!int(a)); }



Karl-Heinz Krause
Technical Details
Message-ID: <477hov$80e@news00.btx.dtag.de>
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail!Krause
References: <474ur7$cul@apopi.u-strasbg.fr>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Message-ID: <477hov$80e@news00.btx.dtag.de>
From: Krause@btx.dtag.de (Karl-Heinz Krause)
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail!Krause
Subject: Re: Frage: illegal structur operation
Date: Wed, 01 Nov 1995 09:22:23 +0000
References: <474ur7$cul@apopi.u-strasbg.fr>
X-Gateway: ZCONNECT XX ius.gun.de [UNIX/Connect v0.73]
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit