Articles of Plantillas de

¿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).

Plantillas anidadas con scope dependiente

¿Qué es el scope dependiente y cuál es el significado de typename en el contexto del siguiente error? $ make g++ -std=gnu++0x main.cpp main.cpp:18:10: error: need ‘typename’ before ‘ptrModel<std::vector >::Type’ because ‘ptrModel<std::vector >’ is a dependent scope make: *** [all] Error 1 /* * main.cpp */ #include #include template struct ptrModel { typedef std::unique_ptr Type; […]

Usos de un encabezado de promoción aritmética de C ++

He estado jugando con un conjunto de plantillas para determinar el tipo de promoción correcto dado dos tipos primitivos en C ++. La idea es que si define una plantilla numérica personalizada, podría usarlos para determinar el tipo de retorno de, por ejemplo, la función operador + en función de la clase transferida a las […]

plantillas: variables de miembro de clase principal no visibles en clase heredada

Tengo los siguientes 4 archivos: arrayListType.h : arrayListType.h y defina clase arrayListType como plantilla arrayListType : Heredado de la clase arrayListType y Declara y define unorderedArrayListType como una plantilla. main1.cpp : Progtwig de prueba para probar la clase main1.cpp unorderedArrayListType . Makefile arrayListType un error de comstackción al acceder a las variables protegidas de arrayListType […]

Plantilla de clase con amigo de clase de plantilla, ¿qué está pasando realmente aquí?

Digamos que estoy creando una clase para un árbol binario, BT , y tengo una clase que describe un elemento del árbol, BE , algo así como template class BE { T *data; BE *l, *r; public: … template friend class BT; }; template class BT { BE *root; public: … private: … }; Esto […]