Konstante aus Variable in c++?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Registriert
19. Aug. 2008
Beiträge
18.275
Reaktionspunkte
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
 
Schau mal nach const_cast.
 
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
 
@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