Konstante aus Variable in c++?

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hallo,
ich weiss passt thematisch nicht ganz in unser Forum, aber ich probiers trotzdem, in der Hoffnung, dass mir ein c-Crack das Brett vor dem Kopf entfernen kann ;-)
Ich habe eine Funktion, die ein bitset primes aufbaut
Code:
const int  a = 100;
std::bitset<a> primes;
jetzt wollte ich eigentlich die Usereingabe für die Grösse des bitset verwenden. Dieser Wert wird von main() an die Funktion übergeben.
Nur motzen der Kompiler und die IDE immer rum vonwegen, dass bitset eine Konstante erwarten würde.
Habe etwas in der Richtung probiert
Code:
const int  a = check;
std::bitset<a> primes;
wobei check der Übergabeparameter an die Fkt ist. Nur scheint das so einfach nicht zu gehen und der Kompiller ruft kräftig aus
Kann man irgendwie aus einer Variable eine Konstante kreieren, die dann von bitset aktzeptiert würde?

Danke für jeden Tip
Gruss

tobi
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Schau mal nach const_cast.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Soweit ich weiß, kann man Konstanten (const) nicht mit einer Variablen initialisieren. Warum? Weil Konstanten normalerweise bereits zur Compilezeit behandelt werden und auch im Code-Segment und damit nicht im Data- oder Stack-Segment liegen; das Code-Segment ist typischerweise 'read-only' und kann daher nicht als symbolische Referenz verwendet werden.

Und ja natürlich gibt es C-Compiler, bei denen man alles herumschrauben kann und wahrscheinlich auch Regel für das Anlegen von Konstanten definieren kann ... also es mag Ausnahmen bei der Behandlung von Konstanten geben (oder auch Konstruktoren für Bitstrukturen, die flexibler sind).

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@merthos
habe ich mir mal angeguckt, scheint aber in diesem Fall nicht zu helfen.

@itari
Deine Argumente machen (leider) Sinn ;-) Alles was der Compiler wertmässig nicht bereits zur Kompillierungszeit kennt, scheint nicht als Konstante für den bitset zu gebrauchen zu sein. Werde mich mal ein wenig umsehen, ob es andere (flexiblere) Konstruktoren dafür gibt

Danke euch beiden + Gruss

tobi
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat