Articles of Plantillas de

Herencia y plantillas en C ++: ¿por qué los métodos son invisibles?

Cuando una plantilla hereda públicamente de otra plantilla, ¿no se supone que los métodos públicos básicos son accesibles? template class Test { public: Test() {} int MyMethod1() { return a; } }; template class Another : public Test { public: Another() {} void MyMethod2() { MyMethod1(); } }; int main() { Another a; a.MyMethod1(); a.MyMethod2(); […]

Metaprogtwigción de plantillas C ++: ¿es posible generar el código generado?

Me gustaría depurar algún código de plantilla para entenderlo mejor. Lamentablemente, soy nuevo en la metaprogtwigción de plantillas y ES difícil para mí entrar. Cuando trato de generar los archivos fuente preprocesados ​​obtengo 125 000 líneas de código: / Entonces, ¿hay alguna manera de ver el Código generado? (La biblioteca que estoy usando es SeqAn […]

Desambiguar el puntero de función miembro sobrecargado que se pasa como parámetro de plantilla

Estoy intentando recrear el patrón Observer en el que puedo reenviar parámetros perfectamente a una función miembro dada de los observadores. Si bash pasar la dirección de una función miembro que tiene varias anulaciones , no puede deducir la función de miembro correcta en función de los argumentos. #include #include #include template struct observer_list { […]

¿Las plantillas de c ++ hacen que los progtwigs sean lentos?

He escuchado de muchas personas que el uso de plantillas hace que el código sea lento. ¿Es realmente cierto? Actualmente estoy construyendo una biblioteca. Hay lugares donde si no se crean plantillas, se produciría un problema de administración del código. A partir de ahora puedo pensar dos soluciones a este problema: use #defines Use plantillas […]

¿Las plantillas C ++ son solo macros disfrazadas?

He estado progtwigndo en C ++ durante algunos años, y he usado bastante STL y he creado mis propias clases de plantilla varias veces para ver cómo se hace. Ahora trato de integrar las plantillas más profundamente en mi diseño de OO, y un pensamiento molesto sigue volviendo a mí: son solo macros, de verdad […]

Plantillas de C ++ Soportes de angularjs Pitfall: ¿Cuál es la corrección de C ++ 11?

En C ++ 11, ahora es la syntax válida: vector<vector> MyMatrix; mientras que anteriormente, tenía que escribirse así (observe el espacio): vector<vector > MyMatrix; Mi pregunta es: ¿cuál es la solución que usa el estándar para permitir la primera versión? ¿Podría ser tan simple como hacer > un token en lugar de >> ? Si […]

Error “no declarado en este scope” con plantillas y herencia

Aquí hay un ejemplo de código que reproduce mi problema: template class Base { public: Base() {} virtual ~Base() {} protected: int myOption; virtual void set() = 0; }; template class ChildClass : public Base < std::vector > { public: ChildClass() {} virtual ~ChildClass() {} protected: virtual void set(); }; template void ChildClass::set() { myOption […]

WPF – Cómo crear botón de imagen con plantilla

Intento crear un botón que tenga 3 imágenes: una imagen Normal, una Imagen Presionada y una Imagen Inhabilitada (las usaré para crear botones de flecha arriba / abajo). Creo que el enfoque correcto sería derivar de Button y usar una Template y establecer disparadores para cambiar la imagen. Tengo 3 propiedades de dependencia, una para […]

¿Cómo inicializar std :: array elegantemente si T no es construible por defecto?

¿Cómo inicializo std::array si T no es construible por defecto ? Sé que es posible inicializarlo así: T t{args}; std::array a{t, t, t, t, t}; Pero n para mí es el parámetro de la plantilla: template void f(T value) { std::array items = ??? } E incluso si no era una plantilla, es bastante feo […]

C-Style Strings como argumentos de plantilla?

¿Se pueden usar cadenas C-Style como argumentos de plantilla? Lo intenté: template struct X { const char *GetString() const { return str; } }; int main() { X x; cout<<x.GetString(); } Y aunque no tengo quejas sobre la definición de clase, la instanciación produce ‘X’ : invalid expression as a template argument for ‘str’ (VC).