Ich habe so etwas:
%Vor%Ist es möglich, den Datentyp von _value abhängig von SIZE zu ändern? Wenn GRÖSSE & lt; = 7 ist, möchte ich, dass _value ein Zeichen ist. Wenn es & gt; = 8 und & lt; = 15 ist, möchte ich, dass es kurz ist und wenn es & lt; = 31 ist, möchte ich, dass es eine ganze Zahl ist.
Das ist nicht besonders elegant, aber:
%Vor%Dann in deiner Klasse:
%Vor% Es geht nicht um negative Zahlen für SIZE
. Dasselbe gilt für Ihren ursprünglichen Code, aber Ihre Textbeschreibung besagt, char
if SIZE <= 7
zu verwenden. Ich erwarte 0 <= SIZE <= 7
wird es tun.
Boost.Integer hat Dienstprogramme für die Typauswahl :
boost::int_t<N>::least
Der kleinste, integrierte, vorzeichenbehaftete Integraltyp mit mindestens N Bits, einschließlich des Vorzeichen-Bits. Der Parameter sollte eine positive Zahl sein. Ein Kompilierungsfehler tritt auf, wenn der Parameter größer als die Anzahl der Bits im größten Integertyp ist.
boost::int_t<N>::fast
Der am einfachsten zu manipulierende, integrierte, vorzeichenbehaftete Integraltyp mit mindestens N Bits, einschließlich des Vorzeichenbits. Der Parameter sollte eine positive Zahl sein. Ein Kompilierungsfehler tritt auf, wenn der Parameter größer als die Anzahl der Bits im größten Integertyp ist.