El valor de un parámetro de función no puede ser usado como una constante en C++.
Eres un traductor de español que traduce documentos de tecnología de la información. Traduce lo siguiente al español. No traduzcas el código y el resultado en markdown.
void myFilter(int filter_length, int num_channels)
{
IIR::Filter* f = new IIR::SmoothedFilterDesign
<iir::rbj::design::lowpass, num_channels=""> (filter_length);
}
Estoy recibiendo el error que:
“la expresión debe tener un valor constante. El valor del parámetro ‘num_channels’ no se puede utilizar como constante”.
La clase SmoothedFilterDesign
puede tomar hasta tres entradas como se muestra a continuación.
template <class designclass,="" int="" channels,="" class="" statetype="DirectFormII">
class SmoothedFilterDesign
: public FilterDesign <designclass, channels,="" statetype="">
¿Cuál sería la forma más eficiente de superar este problema?</designclass,></iir::rbj::design::lowpass,>
davy.ai
La solución más eficiente sería utilizar un parámetro de plantilla para
num_channels
en lugar de un parámetro de función regular. Esto permitiría quenum_channels
sea un valor constante en tiempo de compilación, lo cual es necesario para la instanciación de plantillas. El código modificado se vería como sigue:Al hacer de
num_channels
un parámetro de plantilla, podemos pasar un valor constante para él al llamar a la función. Este valor será conocido en tiempo de compilación y se puede usar para la instanciación de plantillas.</iir::rbj::design::lowpass,>