Datatype afhankelijk van waarde variabele

Status
Niet open voor verdere reacties.

Jeppey

Gebruiker
Lid geworden
5 jun 2006
Berichten
26
Hallo opnieuw,
Ik zit weer eens vast bij het ontwerp van mijn klasse. Het probleem komt erop neer dat ik een variabele wil definiëren waarvan het type afhankelijk is van een andere variabele. Ik heb geprobeerd templates toe te passen, maar het probleem is dat de definitie van de variabele je het type nog niet weet. Ik heb het probleem in onderstaande code versimpeld:

[CPP]
template <typename T>
struct A{
T* rijtje;
};

int main(){
A<type onbekend> a;
int n;

cout << "Voer 0 of 1 in\n";
cin >> n;

if( n == 0 )
a.rijtje = new int[ 5 ];
else
a.rijtje = new double[ 5 ];

return 0;
};[/CPP]

Hoe los ik dit op? Ik ben namelijk van plan allemaal functies te schrijven die operaties uitvoeren op rijtje. En ik heb geen zin om dezelfde code meerdere malen op te schrijven voor een verschillend datatype.
 
Hoe los ik dit op? Ik ben namelijk van plan allemaal functies te schrijven die operaties uitvoeren op rijtje. En ik heb geen zin om dezelfde code meerdere malen op te schrijven voor een verschillend datatype.

Je kunt de variable A toch ook pas aanmaken wanneer het datatype bekend is....

[cpp]
if (n == 0) {
A<int> a_int;
a_int.rijtje = new int[5];
} else if (n == 1) {
A<double> a_double;
a_double.rijtje = new double[5];
}
[/cpp]
 
een andere manier dan wat Cod_NL zegt, is ook niet mogelijk. Je compiler zou dan namelijk nooit weten welk type 'rijtje' is en kan dus ook niet weten welke acties er wel/niet op toegestaan zijn en hoeveel geheugen er voor moet worden gemaakt,
 
Oke bedankt. Het is dus niet mogelijk om dus de variabele 'rijtje' als lidvariabele te definiëren, zodat ik er later bij kan via andere functies. Dan moet ik dus even een andere manier bedenken hoe ik de gegevens opsla.

Wat ik namelijk van plan ben is samples opslaan van een wave-bestand, maar deze verschillen qua grootte (8, 16, 32 bit) en ik vind het zonde om het rijtje dan maar van integers te maken, omdat ik dan misschien meer geheugen gebruik dan nodig zou zijn, en daarnaast kan ik de data niet simpel inlezen via inputfile.read( (char*)rijtje, nSamples ).

Toch bedankt:)
 
een andere manier dan wat Cod_NL zegt, is ook niet mogelijk. Je compiler zou dan namelijk nooit weten welk type 'rijtje' is en kan dus ook niet weten welke acties er wel/niet op toegestaan zijn en hoeveel geheugen er voor moet worden gemaakt,

Hij zou standaard het type 'void' kunnen gebruiken en dan telkens casten wanneer het nodig is. (is alleen omslachtiger dan het type pas aanmaken wanneer nodig)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan