Article View: de.comp.lang.c++
Article #1269Problem bei Verwendung von "const"
From: Nepomuck
Date: Sun, 14 Jan 1996 13:18
Date: Sun, 14 Jan 1996 13:18
41 lines
2568 bytes
2568 bytes
Bei Verwendung von Klassen mit "const"-Methoden bin ich auf ein Problem gestossen, fuer das ich derzeit keine Loesung habe: Angenommen, ich habe eine Klasse A definiert, welche einige "const"-Methoden zum Abfragen von bestimmten Eigenschaften definiert. Anfaenglich sind mir diese Methoden schnell genug, aber nach einiger Zeit stelle ich fest, dass ich aus Effizienzgruenden mehrere Repraesentationen der internen Daten meiner Klasse A benoetige, und dass meine Klasse A beim Aufruf einer der Abfragefunktionen einen Repraesentations- wechsel der Daten vornehmen muss. Weil ich die Abfragefunktionen oft aufrufen moechte, moechte ich die neuen Repraesentation der Daten in A speichern. Dabei entsteht das Problem, dass die urspruenglichen "const"-Methoden ploetzlich nicht mehr "const" sein koennen, obwohl sich an ihrer Funktionalitaet eigentlich nichts aendert. Beispiel: Eine Klasse "complex" fuer komplexe Zahlen speichert zunaechst nur Real- und Imaginaerteil der Zahlen. Abgefragt werden sollen aber auch Polar- koordinaten (z.B. mittels zweier Methoden complex::Winkel() und complex::Betrag()). Normalerweise koennten diese Funktionen als "const" deklariert werden, aber ich moechte erreichen, dass die zeitaufwendige Umrechnung in Winkel und Betrag nur beim ersten Aufruf der zugehoerigen Funktionen geschieht. Das Problem dabei ist, dass die Funktionen jetzt nicht mehr als "const" deklariert werden koennen. Ich moechte allerdings auch nicht grundsaetzlich zu jeder komplexen Zahl Winkel und Betrag von vornherein schon im Konstruktor-Aufruf berechnen, weil es Programmteile geben kann, die die Funktionen "Winkel()" und "Betrag()" gar nicht aufrufen. Gibt es eine Moeglichkeit, dafuer zu sorgen, dass Winkel() und Betrag() trotzdem als "const" deklariert werden? Ansonsten entsteht naemlich das Problem, dass in saemtlichen Klassen, die ein Objekt der Klasse "complex" als Member-Variable beinhalten und "Winkel()" oder "Betrag()" aufrufen, die aufrufenden Methoden ebenfalls nicht mehr als "const" deklariert werden koennen. Vielen Dank fuer jede Hilfe, - Michael - sg102ne@e45-hrze.uni-dortmund.de
Technical Details
Message-ID:
<4davqq$4ni@h20-hrze.uni-duisburg.de>Path:
arc1-ca.pugleaf.net!e45-hrze.uni-duisburg.de!sg102neShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!e45-hrze.uni-duisburg.de!sg102ne From: sg102ne@e45-hrze.uni-duisburg.de (Nepomuck) Newsgroups: de.comp.lang.c++ Subject: Problem bei Verwendung von "const" Date: 14 Jan 1996 13:18:18 GMT Organization: Gerhard-Mercator-Universitaet - Gesamthochschule Duisburg Message-ID: <4davqq$4ni@h20-hrze.uni-duisburg.de> NNTP-Posting-Host: e45-hrz.uni-duisburg.de X-Newsreader: TIN [version 1.2 PL2]